问题是,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