ASP.NET MVC: Управление соглашениями об именах контроллеров / представлений?

Может кто-нибудь сказать мне, как я могу вручную изменить мое соглашение об именах моих маршрутов.. Позвольте мне объяснить. Я программирую все на английском языке по стандартам Microsoft, но я требую

  www.mydomain.com/Reserva  (Spanish for reservation)

У меня на самом деле есть следующее

ReservationController, а затем ниже представлений у меня есть папка под названием Reservation с файлом index.aspx (мой взгляд).

Так что в основном я доволен соглашением об именах, которое у меня есть, но в настоящее время необходимо перейти к

  www.mydomain.com/Reservation

и не

  www.mydomain.com/Reserva 

чтобы моя страница появилась

У меня установлен MapRoute по умолчанию, что мне сделать, чтобы включить вышеуказанное? есть идеи?

   routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

3 ответа

Решение

Вы можете просто создать новый маршрут в этом же файле следующим образом:

routes.MapRoute(
            "Reserva",                                              // Route name
            "Reserva/{action}/{id}",                           // URL with parameters
            new { controller = "Reservation", action = "Index", id = "" }  // Parameter defaults
        );

и поместите его в свой файл выше маршрута по умолчанию.

В этом случае я бы, вероятно, изменил бы имена контроллеров / действий на родной язык (при условии, что вам не нужна поддержка нескольких языков) и сохранил мои переменные и т. Д. На английском. В противном случае, я думаю, что вы застряли с маршрутом на пару контроллер / действие, чтобы сопоставить каждое действие с испанского на его английский эквивалент. В этот момент вы можете захотеть создать свой собственный обработчик маршрута.

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

Еще одна вещь, которую вы можете сделать, это реализовать новую ControllerFactory. Класс ControllerFactory по умолчанию, который использует ASP.Net MVC, - это то, что сопоставляет текст "Резервирование" с классом контроллера, ReservationController, Вы можете найти множество учебных пособий о том, как реализовать и использовать свою собственную логику для создания правильных контроллеров. Вот первый, с которым я столкнулся.

Другие вопросы по тегам