Pau*_*aul 2 c# asp.net-mvc asp.net-mvc-4
我有一个带有几个区域的MVC 4 WebSite ......我正在使用VS2012创建的所有默认路由...
所以,我可以访问(来自Area1):
Area1/ControllerX/ActionX
Run Code Online (Sandbox Code Playgroud)
我有一些没有区域的控制器,所以我可以访问:
ControllerY/ActionY
Run Code Online (Sandbox Code Playgroud)
一切都很好......但是,如果我尝试在没有Area1的情况下访问ControllerX,那样:
ControllerX/ActionX
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
Exception: The view 'ActionX' or its master was not found or no view engine supports the
searched locations. The following locations were searched: ~/Views/mangavagao/ActionX.cshtml
~/Views/Shared/ActionX.cshtml
Controller: ControllerX
Action: ActionX
Run Code Online (Sandbox Code Playgroud)
我期待一个Not Found 404错误...为什么要捕获该路由?
-
区域路线:
context.MapRoute(
"Area1_default",
"Area1/{controller}/{action}/{id}",
new { controller = "ControllerX", action = "ActionY", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
默认路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "ControllerY", action = "ActionY", id = UrlParameter.Optional );
Run Code Online (Sandbox Code Playgroud)
namespaces在默认的maproute函数中添加参数.然后将UseNamespaceFallbackdatatoken 设置为false.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "MvcApplication.Controllers" }
).DataTokens["UseNamespaceFallback"] = false;
Run Code Online (Sandbox Code Playgroud)
namespaces 当存在多个具有相同名称的控制器时,参数被设置为优先考虑控制器查找.
如果在命名空间中找不到匹配项,MVC仍将在此命名空间之外搜索控制器.
UseNamespaceFallback datatoken告诉MVC忽略(2)语句.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |