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

Может кто-нибудь сказать мне, как я могу вручную изменить свое соглашение об именах моих маршрутов .. Позвольте мне объяснить. Я программирую все на английском языке в соответствии со стандартами 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 ]

5 голосов
/ 02 декабря 2009

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

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

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

2 голосов
/ 02 декабря 2009

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

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

2 голосов
/ 02 декабря 2009

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

...