1

我的控制器上有两种方法

Function FollowUp(id As String) As ActionResult 和 Function Details(id As String) As ActionResult

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

但是当我写 <%:Html.ActionLink("Details", "Details")%> 生成的链接确实包含 id (我得到 /Project/Details/25)

谁能解释为什么会这样?

4

1 回答 1

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) 您正在一个页面上创建“FollowUp”链接,该页面当前没有包含在路由中的 id。(比如 home/index 而不是 home/index/25)

于 2012-05-19T01:32:39.070 回答