2013-02-16 122 views
0

我想如下注冊路線:MVC3 URL路由問題

routes.MapRoute(
      "SaleReport", // Route name 
      "SaleReport/GetDataConsolidated/{type}", 
      new { controller = "SaleReport", 
        action = "GetDataConsolidated", 
        type = UrlParameter.Optional}); 

,並在控制器

public ActionResult GetDataConsolidated(string type) 

    { 
     return Content("Report Type = " + type); 
    } 

我打電話是這樣的:本地主機:56674/SaleReport/GetDataConsolidated /銷售

但問題是類型的值始終爲空。 我做錯了什麼?

回答

0

它可能只是.MapRoute(...)調用的順序。

將您的「SaleReport」.MapRoute(...)呼叫稱爲「默認」{controller}/{action}.MapRoute(...)呼叫,因爲它更具體。

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

    routes.MapRoute(
     name: "SaleReport", 
     url: "SaleReport/GetDataConsolidated/{type}", 
     defaults: new { controller = "SaleReport", action = "GetDataConsolidated", type = UrlParameter.Optional }); 

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

我已經做到了。默認路由是在售後報告中定義的。 – 2013-02-16 11:05:53

+0

我剛剛在本地重新創建了整個示例,並且工作正常。 「SalesReport」之前是否有其他路線?你沒有改變變量名稱(類型)?這到目前爲止你在例子中描述的工作。 – Nenad 2013-02-16 11:22:55

+0

感謝您的努力,但我沒有改變任何事情。其相同 – 2013-02-16 11:44:17

0

是否有任何特定的需要定義另一個地圖路線?

它應與默認路由工作,

routes.MapRoute(
     "SaleReport", // Route name 
     "SaleReport/GetDataConsolidated/{type}", 
     new { controller = "SaleReport", 
       action = "GetDataConsolidated", 
       type = UrlParameter.Optional}); 

刪除以上航線, 只要改變行動methos像下面

public ActionResult GetDataConsolidated(string id) 

{ 
    return Content("Report Type = " + id); 
} 

這將工作,謝謝。