我有一个失控的请求控制器,我想在保持一个干净的URL的同时在多个控制器上划分动作。我试图尝试路由,但没有成功。我已经阅读了关于路由的一些示例和教程,但是虽然我理解了这些示例,但似乎没有什么适用于我的案例,并且我觉得并不聪明。我想要的是在我的ApprovalController而不是我的RequestController上处理URL Requests/Approval
,所以我编写了以下内容。MVC路由与部分类
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 = "" }
);
}
但它不工作。为什么?我的视图中有一个名为Approval的文件夹,并且在那里有一个名为Index.cshtml
的文件。我应该如何编码MapRoute?
编辑
我说我有
您能否显示您映射其他路线的顺序?这可能是另一条路线匹配相同的请求。 – awbergs
我只有标准的“开箱”路线,否则。我更新了问题,以便您可以看到“RegisterRoutes”功能。 –
有关路由的一件事要记住,路由是按顺序进行评估的,只要路由匹配,就是使用的路由,因此首先会导致它不再进一步查看。您可以通过名称来指定路线,在这种情况下是“批准” – Brian