我在一个非常简单的站点上使用 AnchorLink,只定义了两条路线,一条标准路线和另一条区域路线admin/{controller}/{action}/{id}
。我在一个类似的网址:
/admin/release/push/255
在那个视图中,我正在使用:
@Html.AnchorLink("Confirm", "Confirm")
AnchorLink 正在呈现一个不包含当前请求 {id} 的链接,即。 /admin/release/confirm
!如果我检查 RouteValues,我可以看到 {id} 在那里。如果我明确地从当前请求中传递路由值,如:
@Html.AnchorLink("Confirm this release", "Confirm", Url.RequestContext.RouteData.Values)
然后它起作用了,我得到了 URL /admin/release/confirm/255
。为什么我传递当前请求路由值的显式版本有效,但没有路由值参数的隐式版本,我认为它会获取当前请求路由值,但不是?我知道上面是一个解决方案,但它很丑陋,并且没有路由值的 AnchorLink 不能按我预期的那样工作是有一些根本原因的?!