Html ActionLink方法有时包含ID

时间:2012-05-18 22:02:47

标签: asp.net-mvc-3

我的控制器上有两种方法

Function FollowUp(id As String)As ActionResult 和 函数详细信息(id As String)作为ActionResult

当我写<%:Html.ActionLink(“FollowUp”,“FollowUp”)%>生成的链接不包含id(我得/ Project / FollowUp)

但是当我写<%:Html.ActionLink(“详情”,“详情”)%>生成的链接包含id(我得/ Project / Details / 25)

有人可以解释为什么会这样吗?

1 个答案:

答案 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)