Die*_*ego 5 redirect asp.net-mvc-areas asp.net-mvc-4
我在MVC4中有一个使用区域的网站.在某些区域(让我们称之为区域),我有一个控制器(控制器)与此操作:
public ActionResult Index()
{
return View();
}
public ActionResult OtherAction()
{
return View("Index");
}
Run Code Online (Sandbox Code Playgroud)
如果我像这样简单地重定向到Area/Controller/OtherAction,这很有用:
return RedirectToAction("OtherAction", "Controller", new { area = "Area" });
Run Code Online (Sandbox Code Playgroud)
但我需要(检查这里为什么)进行这样的重定向:
RouteData routeData = new RouteData();
routeData.Values.Add("area", "Area");
routeData.Values.Add("controller", "Controller");
routeData.Values.Add("action", "OtherAction");
ControllerController controller = new ControllerController();
controller.Execute(new RequestContext(new HttpContextWrapper(HttpContext.ApplicationInstance.Context), routeData));
Run Code Online (Sandbox Code Playgroud)
在那种情况下,它不起作用.在最后一行之后,执行OtherAction方法,然后在此代码的最后一行中抛出此异常:
未找到视图"索引"或其主数据或视图引擎不支持搜索的位置.搜索了以下位置:
〜/查看/控制器/ Index.aspx的
〜/查看/控制器/ Index.ascx
〜/查看/共享/的Index.aspx
〜/查看/共享/ Index.ascx
〜/查看/控制器/ Index.cshtml
〜/查看/控制器/ Index.vbhtml
〜/查看/共享/ Index.cshtml
〜/查看/共享/ Index.vbhtml
为什么会发生这种情况,我该如何解决?
nem*_*esv 11
您得到异常,因为ASP.NET MVC尝试在"根"上下文中查找您的视图而不是在区域视图目录中查找,因为您没有正确设置区域routeData.
该area键需要在设置DataTokens的集合,而不是在Values
RouteData routeData = new RouteData();
routeData.DataTokens.Add("area", "Area");
routeData.Values.Add("controller", "Controller");
routeData.Values.Add("action", "OtherAction");
//...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2209 次 |
| 最近记录: |