0

我在一个非常简单的站点上使用 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 不能按我预期的那样工作是有一些根本原因的?!

4

1 回答 1

0

MVC 在这里做的正是正确的事情。不知道您是否需要锚链接的 Id 参数——换句话说,它没有尝试任何聪明的方法来预解析和检查链接。它只会在渲染时这样做。在您的情况下,如果没有在某处指定 id 参数,它将使用默认路由。

如果您发现自己到处都在编写相同的代码,您可以轻松地将其提取到静态帮助程序类中。这样才能摆脱丑陋。

于 2011-10-29T13:58:47.167 回答