有人能告诉我如何在action方法中调用不同控制器上的方法吗?我不想重定向。我想在另一个控制器上调用一个返回字符串的方法,并在我的action方法中使用响应。
发布于 2009-08-20 07:07:32
我听起来好像你应该重构你的应用程序,并将生成字符串的功能提取到一个新的独立类中(或者重用一个现有的类,如果你有一个合适的类),并让两个控制器都使用那个类。
发布于 2014-12-04 18:16:26
您可以使用以下方法调用另一个控制器上的方法:
var otherController = DependencyResolver.Current.GetService<OtherController>();
var result = otherController.SomeMethod();
在ASP.NET MVC5中,这对我很有效。希望它也能为你工作。
发布于 2010-12-06 01:07:19
您可以通过HtmlHelper
的Action
方法实现这一点。
在视图中,您可以这样做:
@Html.Action("OtherAction")
然而,在动作方法中获取HtmlHelper
的实例并不简单(通过设计)。事实上,这是一个如此可怕的黑客攻击,以至于我甚至不愿意发布它……
var htmlHelper = new HtmlHelper(new ViewContext(
ControllerContext,
new WebFormView(ControllerContext, "HACK"),
new ViewDataDictionary(),
new TempDataDictionary(),
new StringWriter()),
new ViewPage());
var otherViewHtml = htmlHelper.Action("ActionName", "ControllerName");
你可能需要从MVC2的ViewContext
构造函数中删除StringWriter
参数。
https://stackoverflow.com/questions/1296680
复制相似问题