2017-01-23 47 views
4

使用anchor tag helper,我們如何在新的瀏覽器窗口選項卡中打開ASP.NET Core MVC View。我嘗試了以下,但首先它抱怨target屬性也需要具有href屬性。但是,正如我們所知,我們不能將asp-action屬性中的href屬性用於MVC Core;否則我們會得到如下所示的錯誤。 注意:我已經看到了諸如t his one一些建議,但他們沒有標籤相關幫手:錨標籤助手打開視圖在新窗口中 - 選項卡

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

錯誤:

InvalidOperationException: Cannot override the 'href' attribute for . An with a specified 'href' must not have attributes starting with 'asp-route-' or an 'asp-action', 'asp-controller', 'asp-area', 'asp-route', 'asp-protocol', 'asp-host', or 'asp-fragment' attribute.

+2

如果忽略關於目標屬性的visual studio警告,它仍然有效。 您可以刪除href並保持目標。還關閉錨定標記。 否則您可以使用Click Here 另一個有趣的解決方案是添加您的自定義標籤助手。有關更多信息,請參閱此答案https://forums.asp.net/t/2083444.aspx。 –

+1

請注意,沒有MVC6了,因爲它被重新命名以避免混淆。如果你**保留使用它,你只會增加其他人的困惑。 – Tseng

+0

@MohamedRozza你在這個特殊情況下忽略VS警告的建議奏效。謝謝。 – nam

回答

2

我不知道,如果你問一個問題或者如果你分享你的發現?

由於@Mohamed Rozza在評論中提到的,如果你無視 Visual Studio的警告有關target屬性只允許在href存在,那麼你很快就會意識到,超鏈接實際工作,並會在新的標籤。無論Visual Studio抱怨如何。

正如你還指出,有一種替代/替代方案,你可以創建你的鏈接是這樣的:

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

但是,正如你所說的,這種做法是不相關的標籤幫手。但那又如何?

我的問題是:

  • 如何重要的是它爲你和你的項目是100%的標籤幫手 有關?
  • 這是必須的嗎?
  • 如果你不總是使用標籤助手,那麼它是一個展示瓶塞嗎?
  • 你能和解決方法一起生活嗎?
  • 你可以和Visual Studio一起給你看警告嗎?

你有兩個實現你的任務的工作示例。

  1. 一個接不顧VS通過使用Url.Action()解決方法這兩種方法的

無警告

  • 其他的都是壞/錯誤的。如果由於某種原因,你覺得不得不編寫你自己的定製標籤幫手來克服這個......那麼千萬要繼續!

    如果您希望向微軟報告有關不支持href的目標屬性的標記幫助程序的錯誤,請務必繼續!

    最後,如果我不明白需要100%標籤助手相關(或者如果我過於簡化的東西),那麼通過一切手段,隨時分享,因爲我們可能提供更好的選擇。

  • -1

    爲了讓知道標籤助手剃刀,我們需要添加下面一行

    @addTagHelper「*,Microsoft.AspNet.Mvc.TagHelpers」

    到文件名爲_ViewImports.cshtml,你可以在Views文件夾中找到這個文件。如果它不存在,那麼創建這個文件.Razor會自動感知該文件。 希望這樣可以解決你的問題。

    相關問題