MVC Controller路由,在url中更改控制器的名称

时间:2015-07-29 07:54:21

标签: c# asp.net-mvc visual-studio-2013 asp.net-mvc-routing url-routing

我有一个名为IHateYou的控制器,里面有大量的视图,我可以通过输入...\IHateYou\User1来访问。我需要在url中将控制器的名称更改为Users,但其余部分保持不变,因此用户仍然可以通过...\Users\User1输入控制器。我已尝试添加路由,但我仍然可以通过先前的方式访问它。

2 个答案:

答案 0 :(得分:0)

我认为您应该为默认路线添加约束

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "IHateYou", action = "Index", id =UrlParameter.Optional },
constraints: new{ controller= "[^IHateYou]" });

默认路线总是匹配控制器/动作/ id

答案 1 :(得分:-3)

您的路线配置应该有以下路线。

routes.MapRoute(
    name: "Custom",
    url: "Users/{action}/{id}",
    defaults: new { controller = "IHateYou", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "IHateYou", action = "Index", id = UrlParameter.Optional }
);

如果您没有索引视图,可以将默认操作更改为您想要的任何内容。