ASP.NET MVC长路由问题

时间:2013-04-03 13:50:32

标签: asp.net-mvc asp.net-mvc-routing

我怎样才能避免这样的路由配置? 我有一个管理面板,其中具有管理员角色的用户可以使用不同的实体(用户/配置文件/地址/ ...)执行某些操作(编辑/删除/查看)。 我想把所有这些动作都放到1个控制器中。

routes.MapRoute(
            name: "EditProfile",
            url: "Account/Profiles/{id}/Edit",
            defaults: new { controller = "Account", action = "EditProfile" }
        );
routes.MapRoute(
            name: "RemoveProfile",
            url: "Account/Profiles/{id}/Remove",
            defaults: new { controller = "Account", action = "RemoveProfile" }
        );
routes.MapRoute(
            name: "EditAddress",
            url: "Account/Addresses/{id}/Edit",
            defaults: new { controller = "Account", action = "EditAddress" }
        );
routes.MapRoute(
            name: "RemoveAddress",
            url: "Account/Addresses/{id}/Remove",
            defaults: new { controller = "Account", action = "RemoveAddress" }
        );
//...

基本上我想要像这样替换所有MapRoute:

routes.MapRoute(
            name: "AccountProfileActions",
            url: "Account/{entities}/{id}/{subAction}",
            defaults: new { controller = "Account", action = {subAction} + {entities}}
        );

我该怎么做?

1 个答案:

答案 0 :(得分:2)

只是不要指定操作(或控制器)并依赖MVC Route约定,即控制器名称和操作名称将是URL的一部分。

如果您想要一个与您的控制器/操作名称不匹配的特定路由,请考虑使用AttributeRouting之类的内容,这样您就可以在控制器/操作上指定路由,而不是每次都要进入RouteConfig。