2011-09-25 56 views
2

我有一個應用程序,我正在使用全局路由來查詢當前路徑並返回頁面特定的數據。我有路線設置這樣的...asp.net MVC3全局路由和硬編碼路由

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

     routes.MapRoute(
      "Pages", 
      "Pages", 
      new { controller = "Pages", action = "Index" }); 

     routes.MapRoute(
      "Navigation", 
      "Navigation", 
      new {controller = "Navigation", action = "Index"}); 

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

我面臨的問題是,當我去/頁嘗試並添加新的頁面,在火災的PageController像它應該,但調試後,當去/頁的應用程序然後請求HomeController。我在路由設置中丟失了什麼?

+0

請求什麼網址? – SLaks

回答

1

由於{* url},默認路由正在觸發。因此,任何不是/ Pages的頁面都將轉到默認路由。

我需要更多的信息,但如果你試圖做/頁/不管,那麼你需要在網頁上添加路由可選參數:

routes.MapRoute(
     "Pages", 
     "Pages/{page}", 
     new { controller = "Pages", action = "Index", page = UrlParameter.Optional }); 
0

你的默認路由是不正確。它應該看起來像默認路由的定義,當你打開一個新的MVC 3的項目,就像這樣:

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

的問題是,你所定義的默認路由將無法解析其到達它的任何請求。