【问题标题】:Html.ActionLink erroneously picks up the current RouteValuesHtml.ActionLink 错误地获取当前的 RouteValues
【发布时间】:2014-02-21 11:17:56
【问题描述】:

所以我有一条路线(例如 ~/Help/FAQ)。现在,如果我在除常见问题解答以外的任何页面上,Html.ActionLink 将按我的预期工作。

@Html.ActionLink("FAQ", "FAQ", "Help", routeValues:=Nothing, htmlAttributes:=Nothing)

但是如果当前浏览器的 URL 是 FAQ 页面指定了 id 路由属性http://www.example.com/Help/FAQ/56832,那么上面的 ActionLink 会选取当前的 routeVaues 并呈现带有 56832 附加的链接- 即使我明确告诉 ActionLink 我不希望呈现任何 routeValues。

这是一个错误还是我做错了什么?

【问题讨论】:

    标签: asp.net-mvc-4


    【解决方案1】:

    您没有做错任何事,ASP.NET MVC 隐式使用 HTML 帮助程序中的当前路由值。您将不得不覆盖它们:

    在 C# 中:

    @Html.ActionLink("FAQ", "FAQ", "Help", new { id = null }, null)
    

    在 VB.NET 中:

    @Html.ActionLink("FAQ", "FAQ", Help", routeValues:= New With {.id = Nothing}, htmlAttributes:=Nothing)
    

    【讨论】:

    • 虽然没有说明 OP 实际上使用的是 VB.NET,但请更新您的答案。
    • @jacqijvv 完成,但我自己对 VB.NET 并不熟悉。也许有人可以验证。
    • 这是正确的语法,这里是另一个堆栈溢出的例子post。希望这会有所帮助。
    • @jacqijvv:我故意在这个问题上没有标记语言。该行为存在于所有语言中,并且任何语言的解决方案/答案都是可以接受的。这个问题本身与 VB 无关,实际上与语言无关。
    • 我完全不同意你的观点。@Html.ActionLink("FAQ", "FAQ", Help", routeValues:= New With {.id = Nothing}, htmlAttributes:=Nothing) 在语法上与@Html.ActionLink("FAQ", "FAQ", "Help", new { id = null }, null) 不同。人们来这里学习,并为他们的问题找到答案,重要的是我们至少要保持一致。
    猜你喜欢
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    相关资源
    最近更新 更多