2012-07-16 75 views
0

問題是,URL = http://localhost:4032/Category/5中已存在id = 5。但是,爲了傳遞價值的ActionLink的,看來我必須這樣做:如何從ActionLink訪問ID參數?

<td> @Html.ActionLink(p.ProdNo, "Main", "Home", new { id = 5, prodno = p.ProdNo }, null) </td> 

導致正確的網址:http://localhost:4032/Main/5/1097

但有這樣做似乎並不十分正確。我知道必須有一些聰明的方式來解決這個問題。不幸的是,現在已經很晚了,我都很聰明。

我嘗試這樣做:

<td> @Html.ActionLink(p.ProdNo, "Main", "Home", new {prodno = p.ProdNo }, null) </td> 

但結束了http://localhost:4032/Main?prodno=1097

我試着在代碼隱藏中將相應的參數添加到相應的方法中,但似乎也沒有效果。

因此,簡而言之,當使用ActionLink時,如何獲取URL中的路徑值並傳遞另一個/新的路由值?

的Global.asax

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

      routes.MapRoute(
       "Sections", // Route name 
       "{controller}/{action}/{id}/{prodno}/{instid}/{section}", // URL with parameters 
       new { controller = "TestEdit", action = "Index", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional, section = UrlParameter.Optional } // Parameter defaults 
      ); 

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

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

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

     } 
+0

@DotNet .....是類別查看您的代碼背後的型號從?複製?如果是這樣,Category.Id = 5? – MikeTWebb 2012-07-16 21:34:25

+0

我有一個viewmodel,但是,ID確實等於5 – dotnetN00b 2012-07-16 22:33:27

回答

1

我認爲你需要爲您的prodno參數的路由。貌似這個主題可以包含一個解決方案:

Routing with Multiple Parameters using ASP.NET MVC

+0

我也是這樣做的。我會在上面編輯。 – dotnetN00b 2012-07-16 21:40:53

+0

您上一個示例dosent包含id參數的值嗎? – 2012-07-16 22:12:59

+0

我知道。我正在顯示它正在生成的URL,這是錯誤的。 – dotnetN00b 2012-07-16 22:34:12

1

你可以從RouteData取,

@Html.ActionLink(
    p.ProdNo, 
    "Main", 
    "Home", 
    new { id = ViewContext.RouteData["id"], prodno = p.ProdNo }, 
    null 
) 
+0

這是處理它的正常方法嗎? – dotnetN00b 2012-07-17 18:14:54

+0

正常的方法是使用視圖模型。但是這也可以完成這項工作。 – 2012-07-18 05:35:21