问题是id = 5已在URL中http://localhost:4032/Category/5
。但要将该值传递给ActionLink,我似乎必须这样做:
<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中获取routevalue并传入另一个/新路由值?
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 :(得分:1)
我认为您需要为prodno参数设置路线。看起来这个线程可能包含一个解决方案:
答案 1 :(得分:1)
您可以从RouteData
:
@Html.ActionLink(
p.ProdNo,
"Main",
"Home",
new { id = ViewContext.RouteData["id"], prodno = p.ProdNo },
null
)