2013-04-17 3 views
3

я добавил пользовательский маршрут как этогоMvc: маршрут конфигурация маршрутов порядка

 routes.MapRoute(
      name: "Default", 
      url: "{coutry}/{lang}/{controller}/{action}", 
      defaults: new { controller = "Home", action = "Index" } 
     ); 

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

<a id="someId" class="link-button" href="../Documents/Create"><span>Create</span></a> 

теперь единственным способом я могу добиться того, что это что-то вроде href="EN/us/Documents/Create"

есть способ для хранения пользовательского маршрута для моей стороне клиента, и все еще держа href="../Documents/Create"> путь для моей административной стороны, это потому, что у меня есть несколько функций в админке, но теперь я должен включить этот пользовательский маршрут для клиентской стороны. Огромное спасибо.

Есть мои маршруты в настоящее время

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

routes.MapRoute(
      name: "CustomRoute", 
      url: "{country}/{lang}/{controller}/{action}", 
      defaults: new { controller = "Test", action = "Index" } 
     ); 

, но я могу только доступ к CustomRoute с/ES/ES/Test/Index ... почему не принимают значения по умолчанию?

ответ

1

Вам просто нужно, чтобы объявить собственный маршрут после маршрут по умолчанию:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", 
     id = UrlParameter.Optional } 
); 
// SomeOther = someothercontroller 
routes.MapRoute(
    name: "CustomRoute", 
    url: "{coutry}/{lang}/{controller}/{action}", 
    defaults: new { controller = "SomeOther", action = "Index" } 
); 
+0

по умолчанию маршрут конфигурация должна быть всегда в конце конфигурации маршрута. Поскольку конфигурация маршрута будет анализироваться для соответствия конфигурации, она примет и направит этот путь. Поэтому, если вы укажете конфигурацию по умолчанию в начале, она всегда будет соответствовать и маршрутизироваться по этому пути. – Saanch

+0

Я знаю это, и это был мой первый ответ, см. Мое редактирование, но, внимательно глядя на его пример, это не тот случай. –

+0

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

1

Вы заменили по умолчанию RouteConfig в новой конфигурации и это соответствует URL-адрес в этом {Coutry}/{ lang}/{controller}/{action}.

Если вы хотите принять адрес ../Documents/Create, вы должны добавить по умолчанию RouteConfig в конец.

routes.MapRoute(
    name: "CustomRoute", 
    url: "{coutry}/{lang}/{controller}/{action}", 
    defaults: new { controller = "Documents", action = "Index" } 
); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

Также в теге привязки <a id="someId" class="link-button" href="../Documents/Create"><span>Create</span></a> вместо жесткого кодирования href вы можете написать, как следующее.

<a id="someId" class="link-button" href="@Url.Action("Create","Documents")><span>Create</span></a>

+0

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

+0

@Steve: Обновлен мой ответ и, пожалуйста, попробуйте. – Saanch

+0

вы правы, и я попробовал ваш ответ, большое вам спасибо, но теперь я получаю проблему, что я могу получить доступ только к CustomRoute с помощью/ES/es/Test/Index, это для домашней страницы, и мне нужно получить ее с/Только Es/es, некоторые идеи? – Steve

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