ASP.NET Core MVC – Tag Helpers 介紹

来源:http://www.cnblogs.com/tdfblog/archive/2017/08/07/about-tag-helpers-in-asp-net-core.html
-Advertisement-
Play Games

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#語法;此外,它們可以在現有元素範圍內獲得完美的智能提示支持。 看一下簡單的例子,註意上下兩行代碼的區別: ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806121436397-724184568.png) 因為我們在其中使用了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元素的一部分,通常是作為屬性的方式。 ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806121526006-1059749202.png) 關於Image TagHelper更多細節將在下麵內容中介紹! **HTML元素:** ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806121643553-221405249.png) 在上面的圖片中,我們可以看到一個自定義的`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`元素追加版本: ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806121526006-1059749202.png) 這意味著,每當我們更改伺服器上的圖片(_~/images/ aspnetcore.png_)時,Image Tag Helper將附加一個不同的字元串,新的圖像將不會被緩存,所以在每次圖片改變時用戶都可以訪問到最新的圖片;同時,如果在伺服器上的圖片沒有更改,我們仍然會使用圖像緩存的版本。 讓我們看看發生了什麼: 如果我們刷新頁面,將獲得相同內容和相同版本的尾碼。 在MVC應用程式運行時,我們將相同文件名的另一個圖片複製到images文件夾。如果我們再刷新頁面: 除了版本尾碼,其它都是一樣的。 ## Anchor Tag Helpers ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806122054522-1486779067.png) 常見的**a**或者**anchor**標簽可以使用很多類型的Tag Helpers進行擴展,您最可能使用到 _asp-controller_ 和 _asp-action_ 這兩個標簽助手,它們可以幫助我們快速創建指向特定Action方法的鏈接。 如果您熟悉MVC,您可以使用`@Html.ActionLink`幫助類達到與Anchor Tag Helpers相同的結果。 ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806122124272-2039150086.png) 在這個特殊的例子中,老的方式可能看起來更簡短和方便,但是由於我們使用“自定義屬性”或Tag Helpers擴展現有的HTML標記,所以新的方式更加自然;此外,這些方式更清晰,因為我們可以很容易地辨別哪一部分是Action,哪一部分是控制器。 ## Script and Link Tag Helpers 這兩個Tag Helpers使我們在HTML中添加JS和CSS引用更容易;如果我們使用像CDN這樣的外部資源,還能使用本地備用的URL地址。 此外,它們大大簡化了使用全局模式時引用大量資源文件。 就像image標簽助手,Script和Link Tag Helpers也可以幫助我們緩存資源文件。 這個例子顯示我們引用了來自 _aspnetcdn_ 的 Bootstrap JS文件。如果該網站不可用,將引用本地文件,使用 _asp-fallback-src_ Tag Helper;什麼是 _asp-fallback-test_?它是一種知道是否會使用本地備用的方法,在這個示例中,我們使用一個特定的代碼來檢查Bootstrap的JS功能是否存在。 如果 _asp-fallback-test_ 中的表達式返回false(falsy),將使用 _asp-fallback-src_ 指定的源文件。 ### **引用多個文件 - _asp-src-include_、_asp-src-exclude_** 這是我最喜歡Tag Helpers的功能之一,它可以節省引用特定文件夾及其子文件夾中所有或多個文件的時間。 讓我們看一個例子,我在**wwwroot**文件夾下有多個文件夾和**js**文件: ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806122230647-546587072.png) 現在,讓我們看看在 _About.cshtml_ 視圖使用 _asp-src-include_ TagHelper引用多個文件時會發生什麼: 現在當我們運行應用程式,並查看頁面的內容: ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806122355615-420792548.png) 漂亮!我們不必一個一個地手動引用文件,可以使用全局模式引用多個文件夾,也可以方便排除其中的某一些。 讓我們看看如何使用 _asp-src-exclude_ TagHelper: 現在的輸出是: ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806122607022-1248620619.png) 我們從**about**文件夾中得到所有**js**文件中,但排除了**a**文件夾。只需要一個Script標簽,可以現實如此複雜HTML。gulp永別了,grunt以及您曾經在HTML引用JS文件任何方式! 這真的讓我太興奮了,因為這不是開發Angular、React應用程式,而是ASP.NET Core MVC程式。 ### **Link Tag Helper** Link Tag Helper幾乎具有相同的功能,它使用的是 _href_ 屬性而不是 _src_ ,它還具有幾個不同的備用探測屬性: 此代碼將檢查類、屬性和值。如果找不到任何一個,那麼將使用本地Bootstrap文件。 ### **Environment Tag Helper** Environment Tag Helper將根據應用程式運行的環境呈現對應的內容。 讓我們看一看下麵的代碼: 在開發環境中運行頁面將輸出如下效果: ![](http://images2017.cnblogs.com/blog/162090/201708/162090-20170806122833194-1590265121.png) > 原文:《ASP.NET Core MVC – All about Tag Helpers》[https://codingblast.com/asp-net-core-tag-helpers/](https://codingblast.com/asp-net-core-tag-helpers/) 翻譯:[Sweet Tang](http://www.cnblogs.com/tdfblog) 本文地址:[http://www.cnblogs.com/tdfblog/p/about-tag-helpers-in-asp-net-core.html](http://www.cnblogs.com/tdfblog/p/about-tag-helpers-in-asp-net-core.html) 歡迎轉載,請在明顯位置給出出處及鏈接。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 緩存可以大大提高應用程式載入時間和響應速度。我們可以使用緩存Tag Helpers緩存不會頻繁更改的HTML內容。 ...
  • 在前面的隨筆,我介紹了Bootstrap-table表格插件的具體項目應用過程,本篇隨筆介紹另外一個Bootstrap FieInput插件的使用,整合兩者可以實現我們常規的Web數據導入操作,導入數據操作過程包括有上傳文件,預覽數據,選擇並提交記錄等一系列操作。關於這個插件,我在早期隨筆《Boot... ...
  • .NET 微服務:適用於容器化 .NET 應用的體繫結構 容器和 Docker 簡介 什麼是 Docker? Docker 術語 Docker 容器、映像和註冊表 為 Docker 容器選擇 .NET Core 還是 .NET Framework 通用指南 何時為 Docker 容器選擇 .NET ...
  • 當用戶在客戶端上請求本地圖片的時候,我們需要把本地的圖片展示。 1.在控制器端把圖片轉換成流的形式 2.前臺請求控制器端的方法,輸出圖片 控制器端: public class ImageController : Controller { private static readonly string ...
  • 基於 HtmlHelper 自定義擴展Container Intro 基於 asp.net mvc 的許可權控制系統的一部分,適用於對UI層數據呈現的控制,基於 HtmlHelper 的擴展組件 Code 基於 asp.net mvc 的許可權控制系統示例代碼:https://github.com/We ...
  • 前言 很多同學想對CAP的機制以及用法等想有一個詳細的瞭解,所以花了將近兩周時間寫了這份中文的CAP文檔,對 CAP 還不知道的同學可以先看一下 "這篇文章" 。 本文檔為 CAP 文獻(Wiki),本文獻同時提供中文和英文版本,英文版本目前還在翻譯中,會放到Github Wiki 中。 目錄 前言 ...
  • 本例演示在母版頁中的銨鈕事件去獲取某些子頁的內容。在母版本中,有一個銨鈕事件。當瀏覽某些子頁時,用戶點一點母版頁的銨鈕,能去獲取當前頁的內容。 子頁很多,但我們並不是每一個子頁的內容均要去獲取,而且每個子頁的內容不一樣。因此你需要讓父頁的事件知道,哪些子頁是需要獲取的。說白了,這就是平時所說的介面。 ...
  • 【申明】:本人.NET Core小白、Linux小白、MySql小白、nginx小白。而今天要說是讓你精通Linux ... 的開機與關機、nginx安裝與部署、Core的Hello World ...等。 首先,入門文章園子裡面已經很多了。這裡再做個整理和備忘。您也可以根據目錄挑著看。(親測多次可 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...