重學ASP.NET Core 中的標記幫助程序

標記幫助程序是什麼

標記幫助程序使服務器端代碼能夠在 Razor 文件中參與建立和呈現 HTML 元素。 例如,內置的 ImageTagHelper 能夠將版本號追加到圖片名稱。  每當圖片發生變化時,服務器都會爲圖像生成一個新的惟一版本號,所以客戶端總能得到當前圖像(而不是過期的緩存圖像)。html

做者:依樂祝
原文連接:http://www.javashuo.com/article/p-xfqqzhll-kg.htmlweb

標記幫助程序的做用域是如何控制的

標記幫助程序做用域由 @addTagHelper@removeTagHelper 和「!」選擇退出字符等聯合控制。下面就一一的進行相關的介紹吧。緩存

使用 @addTagHelper 添加標記幫助程序

@addTagHelper 指令讓視圖可使用標記幫助程序。 在這種狀況下,視圖文件是_pages/ViewImports,默認狀況下,它由_pages_文件夾和子文件夾中的全部文件繼承,這使得標記幫助程序可用。 
這裏公開標記幫助程序有兩種方式,以下所示:
第一種:使用通配符語法(" * ")指定指定程序集(AspNetCore)中的全部標記幫助程序均可用於_Views_目錄及其子目錄中的每一個視圖文件。服務器

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

第二種:使用標記幫助程序的徹底限定名,添加某個特定的標記幫助程序。mvc

@addTagHelper AuthoringTagHelpers.TagHelpers.EmailTagHelper, AuthoringTagHelpers

說明:@addTagHelper 後第一個參數指定要加載的標記幫助程序(咱們使用「*」指定加載全部標記幫助程序),第二個參數「Microsoft.AspNetCore.Mvc.TagHelpers」指定包含標記幫助程序的程序集。 
注:Microsoft.AspNetCore.Mvc.TagHelpers 是內置 ASP.NET Core 標記幫助程序的程序集。編輯器

@removeTagHelper 刪除標記幫助程序

@removeTagHelper@addTagHelper 具備相同的兩個參數,它會刪除以前添加的標記幫助程序。 例如,應用於特定視圖的 @removeTagHelper 會刪除該視圖中的指定標記幫助程序。 在 Views/Folder/_ViewImports.cshtml 文件中使用 @removeTagHelper,將從 Folder 中的全部視圖刪除指定的標記幫助程序。ide

使用 _ViewImports.cshtml  文件控制標記幫助程序做用域

可將 _ViewImports.cshtml 添加到任何視圖文件夾,視圖引擎將同時應用該文件和 Views/_ViewImports.cshtml 文件中的指令。工具

說明:字體

  1. 若是爲 Home 視圖添加空的 Views/Home/_ViewImports.cshtml 文件,則不會發生任何更改,由於 _ViewImports.cshtml 文件是附加的。
  2. 添加到 Views/Home/_ViewImports.cshtml 文件(不在默認 Views/_ViewImports.cshtml 文件中)的任何 @addTagHelper 指令,都只會將這些標記幫助程序公開給 Home 文件夾中的視圖。

選擇退出字符(「!」)元素級別退出標記幫助程序

使用標記幫助程序選擇退出字符(「!」),可在元素級別禁用標記幫助程序。 例如,使用標記幫助程序選擇退出字符在 <span> 中禁用 Email 驗證:this

<!span asp-validation-for="Email" class="text-danger"></!span>

說明:
須將標記幫助程序選擇退出字符應用於開始和結束標記。 (將選擇退出字符添加到開始標記時,Visual Studio 編輯器會自動爲結束標記添加相應字符)。 
添加選擇退出字符後,元素和標記幫助程序屬性再也不以獨特字體顯示。

使用 @tagHelperPrefix 闡明標記幫助程序用途

@tagHelperPrefix 指令可指定一個標記前綴字符串,以啓用標記幫助程序支持並闡明標記幫助程序用途。 例如,能夠將如下標記添加到 Views/_ViewImports.cshtml 文件:

@tagHelperPrefix th:

在如下代碼圖像中,標記幫助程序前綴設置爲 th:,因此只有使用前綴 th: 的元素才支持標記幫助程序(可以使用標記幫助程序的元素以獨特字體顯示)。 <label><input> 元素具備標記幫助程序前綴,可以使用標記幫助程序,而 <span> 元素則相反。

適用於 @addTagHelper 的層次結構規則也適用於 @tagHelperPrefix

標記幫助程序的 Intellisense 支持

在 Visual Studio 中建立新的 ASP.NET Core web 應用時,它將添加AspNetCore Razor 的NuGet 包 。它 是添加標記幫助程序的工具包。
假設編寫 HTML <label> 元素。 只要在 Visual Studio 編輯器中輸入 <l,IntelliSense 就會顯示匹配的元素:

不只會得到 HTML 幫助,還會有圖標(下方帶有「<>」的「@" symbol with ")


將該元素標識爲標記幫助程序的目標。 純 HTML 元素(如 `fieldset`)顯示「<>」圖標。
純 HTML `
相關文章
相關標籤/搜索