The*_*son 2 c# asp.net-mvc asp.net-mvc-routing
我有一个失控的请求控制器,我想在几个控制器上划分操作,同时保持一个干净的URL.我正在尝试路由,但没有成功.我已经阅读了一些关于路由的示例和教程,但是,虽然我理解这些示例,但似乎没有什么适用于我的情况,我觉得不是更明智.我想要的是Requests/Approval在我的ApprovalController而不是我的RequestController上处理URL ,所以我写了以下内容.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Approval",
"Request/{controller}/{action}",
new { controller = "Approval", action="Index", id = "" }
);
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.为什么?我的视图中有一个名为Approval的文件夹,在那里我有一个名为的文件Index.cshtml.我该如何编写MapRoute代码?
编辑
我添加了我所有的路线
您需要交换两个MapRoute语句,如下所示:
routes.MapRoute(
"Approval",
"Request/Approval/{action}",
new { controller = "Approval", action="Index", id = "" }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
它当前不起作用的原因是因为第一个语句('默认'路由名称)在第二个语句被评估之前得到匹配.
另外(如我上面的示例中所述),您需要删除Approval路径中的"{controller}"并替换为"Approval"...除非您特别需要URL/Request/{ANY controller}/{action}经历,我怀疑.根据您的问题,您似乎只需要/请求/批准/转到您的审批控制器.
不要忘记将默认路由保留在底部,以便与其他控制器和操作匹配.如果不存在其他匹配项,它可以作为一个包罗万象.
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |