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