2012-01-09 2 views
0

Я global.ascx с тремя маршрутамиКак маршрут в MVC3

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 



     routes.MapRoute(
      "TestRoute", 
      "{id}", 
      new { controller = "Product", action = "Index3", id = UrlParameter.Optional }, 
      new { id = @"\d+" } //one or more digits only, no alphabetical characters 
     ); 

     routes.MapRoute(
      "TestCatalogRoute", 
      "{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "RsvpForm", id = UrlParameter.Optional } // Parameter defaults 
      //new { controller = "Product", action = "Index2", id = UrlParameter.Optional } // Parameter defaults 
     ); 


    } 

Когда я ввожу URL выбрать:

http://mydomain.com/ 

Он использует "TestCatalogRoute" маршрут, но я хочу "По умолчанию" маршрут TT

Как:

  • с URL: http://mydomain.com он использует "по умолчанию" маршрут
  • с URL: http://mydomain.com/1 он использует "TestRoute" маршрут (Это уже сделано!)
  • с URL: http://mydomain.com/abc использует "TestCatalogRoute" маршрут

ответ

4

Удалить id = UrlParameter.Optional для TestCatalogRoute затем

3

Изменить порядок ваших маршрутов. Маршрутизатор будет проверять каждый маршрут, сначала тот, который соответствует, будет выбран. Итак, если вы ставите второй, вы должны быть в порядке?

+0

Это хорошо, но я думаю «по умолчанию» маршрут рупор будет найти наконец :) – Stiger

+0

Вы правы, и zerkms является лучшим ответом. Вы второй маршрут бесполезен без параметра id, поэтому он не должен быть дополнительным. – Peter

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