我的控制器上有两种方法
Function FollowUp(id As String)As ActionResult 和 函数详细信息(id As String)作为ActionResult
当我写<%:Html.ActionLink(“FollowUp”,“FollowUp”)%>生成的链接不包含id(我得/ Project / FollowUp)
但是当我写<%:Html.ActionLink(“详情”,“详情”)%>生成的链接包含id(我得/ Project / Details / 25)
有人可以解释为什么会这样吗?
答案 0 :(得分:2)
如果为带有参数的路由创建链接,如果当前路由数据包含该变量,则URL中将包含相同的值。例如:如果您只有标准路由:
routes.MapRoute(
null,
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
当前位于/ home / index / 25,然后如果您创建一个新链接@Html.ActionLink("test","testing")
,那么它将包含当前ID:/ home / testing / 25。
有两种方法我可以想到这个默认ID不会出现:
1)“FollowUp”的路由不同,不包含{id}参数。
routes.MapRoute(
null,
"Project/FollowUp",
new { controller = "Project", action = "FollowUp" }
);
2)您正在路由中当前未包含ID的页面上创建“FollowUp”链接。 (比如home / index而不是home / index / 25)