問題是,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
);
}
@DotNet .....是類別查看您的代碼背後的型號從?複製?如果是這樣,Category.Id = 5? – MikeTWebb 2012-07-16 21:34:25
我有一個viewmodel,但是,ID確實等於5 – dotnetN00b 2012-07-16 22:33:27