Используйте маршрутизацию MVC для псевдонима контроллера

У меня есть контроллер с именем InstallationController и причудливое представление отчета об установке под названием Прейс-лист, но конечный пользователь настаивает на том, чтобы сами установки назывались Прейс-листами. Я хочу, чтобы он увидел URL http://site/RateCard/Edit/3, где это на самом деле маршрутизируется как http://site/Installation/Edit/3. Как я могу сделать это в MVC 3 RC2?


person ProfK    schedule 16.12.2010    source источник


Ответы (1)


Пара вариантов: вы можете либо переименовать контроллер в RateCardController, либо добавить новый маршрут, который ведет к контроллеру установки, например:

routes.MapRoute(
               "RateCard", // Route name
               "RateCard/{action}/{id}", // URL with parameters
               new { controller = "Installation", action = "Index", id = UrlParameter.Optional } // Parameter defaults
               );
person Eric King    schedule 16.12.2010
comment
Я добавляю это после маршрута по умолчанию? Похоже, это не работает — я просто получаю ошибку 404, используя site/RateCard. - person ProfK; 17.12.2010
comment
@ProfK: Если у вас есть и другие контроллеры, этот должен идти перед маршрутом по умолчанию, потому что в противном случае маршрут по умолчанию пытался направить на несуществующий RateCardsController. Другой вариант заключается в том, что вы поместите этот маршрут после маршрута по умолчанию, но вам придется добавить ограничение на маршрут по умолчанию, чтобы игнорировать имя контроллера RateCards. - person Robert Koritnik; 17.12.2010