ASP.Net MVC RC1 RouteCollection.MapRoute Проблема - PullRequest
1 голос
/ 04 февраля 2009

У меня проблема с версией ASP.Net MVC для RC1. Всякий раз, когда я добавляю Маршрут перед маршрутом «По умолчанию», созданные URL-адреса создаются для первого добавленного Маршрута.

Вот моя маршрутизация в Global.asax.cs

routes.MapRoute(
            "product-detailed",
            "Products/{controller}/{action}/{id}",
            new { controller = "ProductSubType", action = "Index", id = "" }
        );

        routes.MapRoute(
            "Default",                                              
            "{controller}/{action}/{id}",                           
            new { controller = "Home", action = "Index", id = "" }  
        );

Создание моего URL:

        <%= Html.ActionLink("Bikes", "Index", "Bikes") %><br />
        <%= Html.RouteLink("Bikes", "product-detailed", new { controller = "Bikes", action = "Index" }) %>

Я ожидаю, что первый ActionLink создаст URL-адрес типа "/ Bikes / Index", а второй RouteLink создаст "/ Products / Bikes / Index", но оба URL-адреса в конечном итоге получатся как "/ Products / Bikes / Index".

Чего мне не хватает здесь при маршрутизации?

Спасибо.

1 Ответ

4 голосов
/ 04 февраля 2009

Ты ничего не пропустил. Он работает как задумано.

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

Потенциальные обходные пути:

  • Исправьте значения контроллера и / или действия, чтобы они не были частью URL
  • Добавить ограничения для верхнего маршрута для значений контроллера и / или действия
  • Всегда используйте ссылки маршрута вместо ссылок действий, поскольку они однозначно указывают, какой маршрут является правильным маршрутом.
...