問題:MVC是一個不同的控制器上定義的操作3使用的ActionResult
我需要的是類似於@ Html.RenderAction(「行動」,「控制器」),但一個東西,我可以使用不同的控制器。這對於例如:
public class FirstController : Controller
{
public ActionResult GetErDone()
{
return View();
}
}
public class SecondController : Controller
{
public ActionResult Index()
{
ActionResult coolResult =
Helper.GetActionResult("GetErDone", "FirstController");
return View();
}
}
進展:
我已經開始剝離/改革的實際@ Html.Action()方法,但它確實有太多的內部輔助性的依賴,我想這不應該沒那麼難。我至今是:
private void TestCreateActionFromDifferentController(RouteValueDictionary routeValues, string controllerName, string actionName)
{
var httpContext = this.HttpContext;
var routeData = this.RouteData;
routeData.Values["action"] = (object)actionName;
if (!string.IsNullOrEmpty(controllerName))
routeData.Values["controller"] = (object)controllerName;
IController myController = ControllerBuilder.Current.GetControllerFactory().CreateController(new RequestContext(httpContext, routeData) , "staticpages");
}
此工程部分的過程(減去像區域數據令牌等諸多缺點),但仍沒有超過反射其他方式獲得的MyActionResult
對象。
摘要:
當控制器裏面,有什麼辦法得到一個動作一個ActionResult這是一個不同的控制器上定義的?
更新:
更具體地說,我試圖使用像System.Web.Mvc.Html.ChildActionExtensions.ChildActionMvcHandler但一個,這並不執行,而是返回的ActionResult
http://stackoverflow.com/questions/483091/render-作爲一個字符串的視圖 –
[.NET MVC調用方法在不同的控制器上]的可能重複(http://stackoverflow.com/question s/1296680/net-mvc-call-method-on-different-controller) – jgauffin
感謝這些鏈接,但是:我不需要'渲染''View',我需要創建一個'ActionResult'對象的實例(更類似於渲染動作 - 與渲染視圖不同)。另外,我不需要返回一個字符串,我需要返回一個ActionResult(它需要controllerContext因此它不能被重構)。這是非常具體和非常不同的 –