2010-01-13 2 views
1

Я изучаю MVC, и мне нужно понять, почему это не работает так, как должно.MVC Проблема маршрутизации

Вот моя маршрутизация:

public static void RegisterRoutes(RouteCollection routes) 
    { 

     // Note: Change the URL to "{controller}.mvc/{action}/{id}" to enable 
     //  automatic support on IIS6 and IIS7 classic mode 

     //http://localhost/store/category/subcategory/product 

     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


     routes.MapRoute(
      "Category",            // Route name 
      "store/{category}/{subcategory}",      // URL with parameters 
      new 
      { 
       controller = "Catalog", 
       action = "Index", 
       category = "Featured Items", 
       subcategory = "All Items" 
      } 
     ); 


     routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" }, // Parameter defaults 
      new { controller = @"[^\.]*" }       // Parameter constraints 
     ); 


    } 

Я так понимаю маршрутизацию я должен увидеть следующий URL, когда я запустить веб-приложение:

HTTP:/LOCALHOST/магазин/

Что Я получаю второй маршрут ....

Кроме того, если я изменю второй маршрут на «home/{action}/{id}, он не поймает никаких маршрутов.

Не могли бы вы помочь мне понять это, пожалуйста. Спасибо

ответ

0

Маршруты не задают URL по умолчанию; URL-адрес по умолчанию обрабатывается вашим приложением. Маршрутизация указывает, что когда он увидит http://localhost/store/bikes/mountain, он будет использовать контроллер каталога. Но это не указывает URL-адрес по умолчанию; вы должны ввести это в свойства проекта.

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

http://localhost/home/home/index соответствовать индексного действия в HomeController, в то время как настройка по умолчанию ловит http://localhost/home/index ...

Значит ли это имеет смысл?

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