Tag Helpers 提供了在視圖中更改和增強現有HTML元素的功能。將它們添加到視圖中,會經過Razor模板引擎處理並創建一個HTML,之後再返回給瀏覽器。 ...
ASP.NET Core Tag Helpers系列目錄,共四篇: - [ASP.NET Core MVC – Tag Helpers 介紹](http://www.cnblogs.com/tdfblog/p/about-tag-helpers-in-asp-net-core.html) - [ASP.NET Core MVC – Caching Tag Helpers](http://www.cnblogs.com/tdfblog/p/caching-taghelpers-in-asp-net-core-mvc.html) - [ASP.NET Core MVC – Form Tag Helpers](http://www.cnblogs.com/tdfblog/p/form-taghelpers-in-asp-net-core-mvc.html ) - [ASP.NET Core MVC – 自定義 Tag Helpers](http://www.cnblogs.com/tdfblog/p/custom-tag-helpers-in-asp-net-core-mvc.html) ## 簡介 Tag Helpers 提供了在視圖中更改和增強現有HTML元素的功能。將它們添加到視圖中,會經過Razor模板引擎處理並創建一個HTML,之後再返回給瀏覽器。有一些Tag Helpers,其實作為元素或實際的標簽(如environment,cache等)。 它們使用HTML方式編寫,同時利用了Razor的強大功能、C#的簡潔和HTML的友好性。由於使用Tag Helpers感覺如此自然,看起來像標準的HTML,前端開發人員也可以輕鬆地適應,不需要學習C#語法;此外,它們可以在現有元素範圍內獲得完美的智能提示支持。 看一下簡單的例子,註意上下兩行代碼的區別:  因為我們在其中使用了Tag Helper,所以Visual Studio自動為`img`元素更改顏色。 為什麼稱為Tag Helper?因為我們將HTML元素稱為標簽(< div >,< body >,< span >),並且希望改進或可能改變這些元素的行為。 它們可能會使您想到Razor中的HTML Helpers,的確,它們也具有部分相同的功能,但是,Tag Helpers使用起來更加自然;我們通常會使用它們來擴展現有HTML元素,使用HTML Helpers是用來創建一個新的HTML元素。 它們讓我想到的另一件事:AngularJS指令。在AngularJS 1(組件進入AngularJS 1.5之前)中,兩種最常見的指令類型是元素指令和屬性指令。元素指令將創建一個新的DOM元素,屬性指令用來改變現有DOM元素的行為。不同的是Tag Helpers在服務端運行,AngularJS在瀏覽器中運行。 ## 使用Tag Helpers的方法 我們可以: * 把它們作為HTML屬性 * 或作為HTML標簽/元素 * 或者我們使用它們作為現有HTML元素的子元素 **HTML屬性:** 我們可以使用內置或自定義的Tag Helpers作為現有HTML元素的一部分,通常是作為屬性的方式。  關於Image TagHelper更多細節將在下麵內容中介紹! **HTML元素:**  在上面的圖片中,我們可以看到一個自定義的`super-cool-element`TagHelper作為自定義HTML標簽,還可以看到一個內置的**`environment`**TagHelper,它對於基於當前環境呈現內容非常有用。 ## 內置Tag Helpers列表 表單相關Tag Helpers: * Form * FormAction * Input * Label * Option * Select * TextArea * ValidationMessage * ValidationSummary 緩存: * Cache * Distributed 其他: * Image * Anchor * Script * Link * Environment > **註意**:所有內置的Tag Helpers以 _**asp-**_ 作為首碼。 在這篇文章中,我們將看到一些常用的Tag Helpers,確切地說就是上面“其他”類別的Tag Helpers。在接下來的幾個帖子中,將會看到最重要的Form Tag Helpers;另外,我們將介紹緩存Tag Helpers最重要的細節。 ## Image Tag Helper 此Tag Helper確保要顯示的圖片是文件系統中的最新圖像。 在這個例子中,使用Image Tag Helper,它基於當前提供的`image`元素追加版本:  這意味著,每當我們更改伺服器上的圖片(_~/images/ aspnetcore.png_)時,Image Tag Helper將附加一個不同的字元串,新的圖像將不會被緩存,所以在每次圖片改變時用戶都可以訪問到最新的圖片;同時,如果在伺服器上的圖片沒有更改,我們仍然會使用圖像緩存的版本。 讓我們看看發生了什麼:






