2009-12-02 1 views
2

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

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

Я на самом деле имеет следующий

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

Поэтому в основном я доволен именованием у меня есть, но в данный момент это необходимо, чтобы перейти к

www.mydomain.com/Reservation 

и не

www.mydomain.com/Reserva 

, чтобы получить мою страницу, чтобы придумать

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

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

Спасибо за любые комментарии, я собираюсь пойти с созданием каждого маршрута отдельно, поскольку у меня их нет, я знаю, что он не масштабируется ... но он исправляет меня в настоящее время .. спасибо –

ответ

5

Вы можете просто создать новый маршрут в том же файле, как так:

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

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

+0

Как вы собираетесь обрабатывать действия? – tvanfosson

+0

Действия могут стать сложными, если вы пытаетесь сделать то же самое ... вы можете столкнуться с беспорядком маршрутов для обработки каждого действия - если слишком много маршрутов вызывает беспокойство (что имеет смысл - вы не захотите маршрут, соответствующий каждому действию - sheesh), тогда вам, вероятно, нужно будет изучить одно из более надежных решений, предлагаемых людьми с большим количеством отзывов, чем у меня ...;) – onekidney

2

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

2

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

Так что еще одна вещь, которую вы можете сделать, - это реализовать новый ControllerFactory. По умолчанию класс ControllerFactory, используемый ASP.Net MVC, отображает текст «Резервирование» в класс контроллера, ReservationController. Вы можете найти множество руководств о том, как реализовать и использовать свою собственную логику для создания правильных контроллеров. Here's the first one I came across.

Смежные вопросы