MVC RegisterRoutes只更改控制器名称

时间:2014-10-21 03:27:45

标签: c# asp.net-mvc-4

我们有一个具有两个不同角色的MVC 4应用程序,对Role1的所有请求都转发到

Role1XYZController和Role2请求被转发到Role2XYZContoller。

这些页面的请求网址应显示为:浏览器中的XYZController / Index。

我们可以使用以下方式实现这一目标:

if(role == role1)
{
routes.MapRoute(
    "XYZRoute",                                              // Route name
    "XYZ/Request",                          
    new { controller = "Role1XYZ", action = "Request", id = UrlParameter.Optional }  
);
}

但我有多种操作方法:Role1XYZ控制器中的Request,Save,Drilldown,Details。我应该为所有actionMethods创建单独的MapRoute吗?

如何在请求网址中重新路由控制器名称?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Request替换为{action}

if(role == role1)
{
    routes.MapRoute(
        "XYZRoute",                                              // Route name
        "XYZ/{action}",                          
        new { controller = "Role1XYZ", action = "Request", id = UrlParameter.Optional }  
    );
}

请记住,最后一行只是路线的默认值。它仍将与其他行动相匹配。