2013-04-22 4 views
2


Я хочу сделать несколько маршрутов карты в MVC, чтобы оба были одинаковыми.
Регистрация нескольких маршрутов в MVC asp.net

локальный: 1010/ABCD/дома/индекс
локальный: 1010/дом/индекс/ABCD

ID = ABCD контроллер = дом действие = индекс

Я сильфона код, но он оленья кожа» t Работа

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

     routes.MapRoute(
      "ShoppingManagment", 
      "{id}/{controller}/{action}", 
      new { controller = "ShoppingManagment", 
      action = "ShoppingManagment", id = UrlParameter.Optional }); 


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

    } 
+0

Вы хотите, чтобы эти маршруты соответствовали нескольким контроллерам или просто управлению ShoppingManagement? Ваша проблема в том, что в настоящее время оба этих определения маршрута идентичны - строка/строка/строка, поэтому все они будут подняты по верхнему маршруту. – Richard

ответ

11

Это не сработает, потому что оба маршрута имеют одинаковый формат.

Таким образом, MVC Routing Engine не может различать оба шаблона url.

Попробуйте написать контроллер непосредственно в шаблоне URL.

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

     routes.MapRoute(
      "ShoppingManagment", 
      "{id}/ShoppingManagment/{action}", 
      new { controller="ShoppingManagment", action = "ShoppingManagment", id = UrlParameter.Optional }); 


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

    } 
+0

PLZ проверить обновление. – Virus

+0

Я хочу использовать первый формат для специального контроллера и другого контроллера, используя второй формат. как мне это сделать? – Ahmad

+0

Да, сделав первый маршрут с фиксированным контроллером в шаблоне url, вы можете достичь этого ... см. Код в ответе, в котором он имеет контроллер «ShoppingManagement» в шаблоне url, поэтому, в зависимости от того, какой url будет иметь управление покупкой, поскольку второй параметр будет соответствуют этому маршруту, другие будут соответствовать другому маршруту. – Virus