2013-03-19 94 views
0

這是我的路線註冊碼:錯誤的MVC路由匹配。 Asp.net

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

     routes.MapRoute(
      "course_list", 
      "course/list", 
      new { controller = "course", action = "list" } 
     ); 

     routes.MapRoute(
      "course_view", 
      "course/view/{id}", 
      new { controller = "course", action = "list", id = UrlParameter.Optional } 
     ); 

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

我有一個鏈接/場/視圖/ 87

,這就是匹配的路由/當然/列表

任何人都可以解釋爲什麼?

謝謝

UPDATE:

routes.IgnoreRoute( 「{}資源個.axd/{*} PATHINFO」);

 routes.MapRoute(
      "course_list", 
      "course/list", 
      new { controller = "course", action = "list" } 
     ); 

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

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

但我仍然遇到同樣的問題。 當我訪問:/ course/view/87我得到一個404錯誤。

回答

0

看起來您的路線爲course/view/{Id}具有「列表」操作。我預計這是一個錯字。

0

將這些路由添加到一個空的Asp.Net Mvc 4項目並使用routedebugger(http://nuget.org/packages/routedebugger/),我得到一個匹配路由「course/view/{id}」。您應該在本地使用routedebugger來查看發生了什麼。上面的代碼似乎很好。

+0

其他答案似乎是正確的,而它正在參與你想要的路線,它似乎在調用「列表」的錯誤行爲。 – jpmcclung 2013-03-19 21:44:27

0

按鈕元素被視爲提交按鈕(即:如果未設置默認類型屬性,則type =「submit」)。因此,瀏覽器發起了一個post請求,沒有路由滿足,因爲我的所有動作都被獲得了。

謝謝大家的時間。