2010-01-13 116 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 
     ); 


    } 

我明白路由我應該看到下面的網址,當我啓動Web應用程序的方式:

的http:/本地主機/存儲/

什麼我得到的是第二條路線......

此外,如果我將第二條路線更改爲「home/{action}/{id},它不會捕獲任何路線。」

你能幫我理解這個嗎..謝謝

回答

0

路由不指定默認的URL;默認網址由您的應用處理。路由指定當它看到http://localhost/store/bikes/mountain時,它將使用目錄控制器。但是這並沒有指定默認的URL;你必須在項目屬性中輸入它。

我建議不要更改第二個,因爲除非您正在爲所有控制器創建分組,所以最好具有默認值,以便您可以捕獲所有URL。您切換到第二個將要求網址爲:

http://localhost/home/home/index匹配的HomeController的指標作用,而默認設置捕捉http://localhost/home/index ...

這是否有意義?