我怎样才能避免这样的路由配置? 我有一个管理面板,其中具有管理员角色的用户可以使用不同的实体(用户/配置文件/地址/ ...)执行某些操作(编辑/删除/查看)。 我想把所有这些动作都放到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}}
);
我该怎么做?
答案 0 :(得分:2)
只是不要指定操作(或控制器)并依赖MVC Route约定,即控制器名称和操作名称将是URL的一部分。
如果您想要一个与您的控制器/操作名称不匹配的特定路由,请考虑使用AttributeRouting之类的内容,这样您就可以在控制器/操作上指定路由,而不是每次都要进入RouteConfig。