2013-10-18 38 views
1
routes.MapRoute(
       "RouteSample", 
       "Controler/Action/{sampleId}", 
       new { controller = "Controller", action = "Action", sampleId=  UrlParameter.Optional } 
); 

<a href="@Url.RouteUrl("RouteSample", new { sampleId= 5 })> sample </a> 


ActionResult Action(var sampleId) 
{ 
     // Here I always get sampleId as null. I didn't get any value 
     // I always get value only by RouteData.Values["Id"].. and another doubt is I have parameter name is sampleId. But I can get data only by mentioning "Id" in RouteData values.. why is like that ? 
} 

我總是隻通過RouteData.Values [「Id」]獲得值,另一個疑問是我的參數名是sampleId。但是我可以通過在RouteData值中提到「Id」來獲取數據。爲什麼會這樣?帶參數的Mvc RouteUrl

+0

只有傳遞參數的類型應該是相同的名稱永遠不會固定,取決於用戶。 :) – Rex

+0

'@ Url.RouteUrl(「RouteSample」,new {sampleId = 5}'在客戶端上生成什麼URL? –

+0

如何將sampleId聲明爲var? – MRB

回答

1

我認爲你的routes.MapRoute的屬性是錯誤的。 試試這個。

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

編號只通過路由名稱我正在調用這個動作,但是對於我來說sampleId只能通過,它總是空的,我只能通過RouteData.Values獲得數據[「Id」] –

+1

I想@SanketS指的是控制器和動作應該在{controller}括號之間,但我認爲這是你在示例代碼中錯過的東西。 –