2013-04-03 3 views
1

Как я могу избежать настройки маршрута? У меня есть панель администратора, где пользователь с ролью администратора может выполнять некоторые действия (редактировать/удалять/просматривать) с помощью разных объектов (пользователей/профилей/адресов/...). И я хочу поставить все это действие в 1 контроллер.ASP.NET MVC long Route issue

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}} 
     ); 

Как я могу это сделать?

ответ

2

Просто не указывайте действие (или контроллер в этом отношении) и полагайтесь на соглашения MVC Route, то есть имя контроллера и имя действия будут частью URL-адреса.

Если вы хотите, чтобы у вас был конкретный маршрут, который не соответствует вашим именам контроллеров/действий, подумайте о том, чтобы использовать что-то вроде AttributeRouting, что позволит вам указать маршрут прямо на вашем контроллере/действии вместо того, чтобы идти в RouteConfig каждый раз.

+0

Спасибо. Я думаю, что это лучшее решение для этой проблемы – bogdan