asp.net core新特性之TagHelper標(biāo)簽助手
今天開始,我就來說說asp.net core的新特性,今天就說說TagHelper標(biāo)簽助手。雖然學(xué)習(xí).net,最有幫助的就是microsoft的官方說明文檔了,里面把一些使用說明都寫的非常清楚,但奈何.net core放入文檔微軟還沒來得及翻譯,對于英文不好的人來說簡直就是看的艱辛。所以今天就來學(xué)習(xí)學(xué)習(xí)這標(biāo)簽助手,和博客園大佬分享分享經(jīng)驗。
想看Microsoft官方文檔和Git項目的可以直接點擊以下傳送門~~
說起TagHelper給我的印象,有點像asp.net form當(dāng)中的服務(wù)器端控件,又有點像Angular或者Vue當(dāng)中的“組件”的后端實現(xiàn)版本。用戶可以將一組html標(biāo)簽集合轉(zhuǎn)換為一個自定義標(biāo)簽,實現(xiàn)了html代碼的復(fù)用。
那么正文開始~~
首先,我們需要安裝一個vs2017插件:Razor Language Services。這個插件能在html中智能提示用戶自定義的標(biāo)簽助手。
https://marketplace.visualstudio.com/items?itemName=ms-madsk.RazorLanguageServices
創(chuàng)建一個asp.net core項目


使用微軟定義的標(biāo)簽助手,在安裝了插件后,使用標(biāo)簽助手的標(biāo)簽會進(jìn)行高亮顯示

上圖中environment、link、a標(biāo)簽均使用了標(biāo)簽助手實現(xiàn)各自的功能
<a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">taghelpersample</a>
a標(biāo)簽中通過使用asp-controller,asp-action自定義屬性來實現(xiàn)路由訪問。
這時有人會說,我也可以使用@Html類來實現(xiàn)相同功能,為什么需要使用TagHelper?
@Html.ActionLink("taghelpersample", "Index", "Home",null, new { Class = "navbar-brand" })
確實,使用@Html幫助類我們能實現(xiàn)相同的功能,但是使用標(biāo)簽助手的方式不是更加符合html的標(biāo)簽語法嗎,對于強(qiáng)迫癥程序員簡直就是福音~~。而且對于標(biāo)簽的原有屬性的添加例如class,標(biāo)簽助手的使用也更加方便。
<!--標(biāo)簽助手版form-->
<form asp-controller="Home" asp-action="Index" class="form-horizontal" method="post">
</form>
<!--Html幫助類版form-->
@using (Html.BeginForm("Index", "Home", FormMethod.Post,, new { Class = "form-horizontal" }))
{
}
此外,標(biāo)簽助手的另外一個特色就是可以自定義,具體步驟如下:
(1)創(chuàng)建派生自TagHelper類的Class
//類會默認(rèn)轉(zhuǎn)換為<text-collection></text-collection>
public class TextCollectionTagHelper:TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
base.Process(context, output);
}
}
(2)設(shè)置屬性與基本類
public string Color { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "div";
output.Attributes.Add("style", "color:" + Color);
var text = "Hello,World";
var h1 = new TagBuilder("h1");
var h2 = new TagBuilder("h2");
var h3 = new TagBuilder("h3");
var h4 = new TagBuilder("h4");
var h5 = new TagBuilder("h5");
var h6 = new TagBuilder("h6");
h1.InnerHtml.Append(text);
h2.InnerHtml.Append(text);
h3.InnerHtml.Append(text);
h4.InnerHtml.Append(text);
h5.InnerHtml.Append(text);
h6.InnerHtml.Append(text);
output.Content.AppendHtml(h1);
output.Content.AppendHtml(h2);
output.Content.AppendHtml(h3);
output.Content.AppendHtml(h4);
output.Content.AppendHtml(h5);
output.Content.AppendHtml(h6);
}
(3)在_ViewImports.cshtml導(dǎo)入類命名空間
@addTagHelper *,taghelpersample
(4)在cshtml中使用標(biāo)簽助手
<text-collection color="red"></text-collection> <text-collection color="blue"></text-collection> <text-collection color="#666"></text-collection>
(5)調(diào)試效果

OK,今天關(guān)于TagHelper就分享到這。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET全棧開發(fā)教程之前后臺校驗結(jié)合詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET全棧開發(fā)教程之前后臺校驗結(jié)合的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
.NET Core實現(xiàn)企業(yè)微信獲取部門成員
這篇文章介紹了.NET Core實現(xiàn)企業(yè)微信獲取部門成員的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
asp.net XMLHttpRequest實現(xiàn)用戶注冊前的驗證
用戶注冊前的驗證,提高用戶體驗。2009-10-10

