【问题标题】:Anchor tag helper to open view in new window-tab锚标记助手以在新窗口选项卡中打开视图
【发布时间】:2017-06-07 13:11:07
【问题描述】:

使用anchor tag helper,我们如何在新的浏览器窗口选项卡中打开 ASP.NET Core MVC View。我尝试了以下方法,但首先它抱怨target 属性也需要有href 属性。但是,正如我们所知,我们不能在MVC Core 中使用带有asp-action 属性的href 属性;否则我们会得到如下所示的错误。 注意:我看过一些建议,例如 this one,但它们与标签助手无关:

<a asp-action="testAction" href="#" target="_blank">Click Here</a>

错误:

InvalidOperationException:无法覆盖 'href' 属性 .具有指定 'href' 的 不能具有开头的属性 使用“asp-route-”或“asp-action”、“asp-controller”、“asp-area”、 “asp-route”、“asp-protocol”、“asp-host”或“asp-fragment”属性。

【问题讨论】:

  • 如果您忽略了有关目标属性的 Visual Studio 警告,它仍然有效。您可以删除 href 并保留目标。同时关闭锚标记。否则,您可以使用 Click Here 另一个有趣的解决方案是添加您的自定义标签助手。有关更多信息,请参阅此答案forums.asp.net/t/2083444.aspx
  • 请注意,没有 MVC6 了,因为它被重命名以避免混淆。如果您继续使用它,只会增加其他人的困惑。
  • @MohamedRozza 您在这种特殊情况下忽略 VS 警告的建议奏效了。谢谢。
  • 试着去掉 href 但留在 target="_blank"

标签: c# asp.net-core asp.net-core-tag-helpers


【解决方案1】:

我不确定您是在提问还是在分享您的发现?

正如@Mohamed Rozza 在 cmets 中提到的,如果您忽略 Visual Studio 警告关于 target 属性仅在 href 存在时才允许,那么您很快就会意识到超链接实际上有效并在新选项卡中打开。不管 Visual Studio 抱怨什么。

正如您还指出的,有一种替代/解决方法,您可以像这样创建链接:

<a href="@Url.Action("testAction","Home")" target="_blank">Click Here</a>

但是,正如您所说,这种方法与标签助手无关。但那又怎样?

我的问题是:

  • 100% 成为标签助手对您和您的项目有多重要 相关?
  • 这是必须的吗?
  • 如果您不总是使用标签助手,这是否会妨碍您?
  • 您能接受变通办法吗?
  • 你能接受 Visual Studio 向你显示警告吗?

您有两个工作示例可以完成您的任务。

  1. 忽略 VS 警告
  2. 另一个通过使用 Url.Action() 的解决方法

这两种方法都不是坏的/错误的。如果出于某种原因你觉得有必要编写自己的自定义标签助手来克服这个问题......那么请务必继续!

如果你想向微软报告一个关于标签助手不支持没有 href 的目标属性的错误,那么请继续!

最后,如果我不明白需要 100% 与标签助手相关(或者如果我过于简化东西),那么请随时分享,因为我们可能会提供更好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2014-02-02
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多