溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET?Core?MVC如何自定義Tag?Helpers

發(fā)布時(shí)間:2022-02-22 09:14:04 來(lái)源:億速云 閱讀:162 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“ASP.NET Core MVC如何自定義Tag Helpers”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“ASP.NET Core MVC如何自定義Tag Helpers”這篇文章吧。

介紹

通過創(chuàng)建自定義Tag Helpers,我們可以擴(kuò)展現(xiàn)有元素或創(chuàng)建我們自己的元素。

Tag Helper是實(shí)現(xiàn)ITagHelper接口類的統(tǒng)稱。MVC為我們提供了該接口的抽象類TagHelper,它位于 Microsoft.AspNetCore.Razor.Runtime 程序集中。因此,我們可以直接從TagHelper類繼承,我們主要需要實(shí)現(xiàn)以下方法:

    public virtual void Process(TagHelperContext context, TagHelperOutput output);

    public virtual Task ProcessAsync(TagHelperContext context, TagHelperOutput output);

Process方法是具體的邏輯實(shí)現(xiàn)。它需要傳遞 Tag Helper上下文的實(shí)例和Tag Helper輸出(我們可以用它來(lái)讀取和更改Tag Helper范圍內(nèi)的實(shí)際內(nèi)容)。

簡(jiǎn)單示例

我們創(chuàng)建自己的Tag Helper。假設(shè)我們將使用<simple> </simple>Tag Helper,其中的內(nèi)容將是粗體。

我們將要?jiǎng)?chuàng)建一個(gè)名為CustomTagHelpers的新項(xiàng)目。因此,程序集名稱也將是 CustomTagHelpers。

首先,我們創(chuàng)建一個(gè)新的Tag Helper。使用Visual Studio,我們可以這樣操作添加 - > 新建項(xiàng) - > Web - > Razor 標(biāo)記幫助器。

這是默認(rèn)生成的代碼:

    public class SimpleTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
        }
    }

我們需要做的是將輸出標(biāo)簽名稱設(shè)置為 strong:

    public class SimpleTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "strong";          
        }
    }

為了能夠在我們的視圖中使用新創(chuàng)建的Tag Helper,我們必須在 ViewImports.cshtml 文件中添加下面這一行:

    @addTagHelper *, CustomTagHelpers

_  @addTagHelper _ 指令后可以注意到兩個(gè)字符串:

  • 它的第二部分 - CustomTagHelpers 表示從哪個(gè)程序集名稱里加載Tag Helper;

  • 第一個(gè)字符串在_  @addTagHelper _指令之后表示要加載的TagHelper的名稱,通配符(*)表示我們將使用給定程序集中所有Tag Helper。

如果我們現(xiàn)在轉(zhuǎn)到其中一個(gè)頁(yè)面并寫入如下代碼:

    <simple>CodingBlast</simple>

我們將在Visual Studio中看到這個(gè)**simple **的標(biāo)簽已經(jīng)變成紫色,并且被識(shí)別為Tag Helper。如果我們運(yùn)行應(yīng)用程序,我們將以粗體顯示此文本。

如果我們查看HTML輸出,我們可以看到simple 標(biāo)簽被strong所替代:

    <strong>CodingBlast</strong>

改變屬性

我們來(lái)構(gòu)建另外一個(gè)Tag Helper,作為img標(biāo)簽的另一種方式。我們將添加一個(gè)名稱是CuteTagHelper的新的Tag Helper。

using Microsoft.AspNetCore.Razor.TagHelpers;
namespace CustomTagHelpers.TagHelpers
{
    [HtmlTargetElement("cute")]
    public class CuteTagHelper : TagHelper
    {
        public string ImageLink { get; set; }
        public string AlternativeText { get; set; }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "img";
            output.TagMode = TagMode.StartTagOnly;
            output.Attributes.SetAttribute("src", ImageLink);
            output.Attributes.SetAttribute("alt", AlternativeText);
        }
    }

如果我現(xiàn)在轉(zhuǎn)到_.cshtml_文件并開始輸入:

ASP.NET?Core?MVC如何自定義Tag?Helpers

你可以看到 **cute ** 的是紫色的,說(shuō)明Visual Studio認(rèn)為它是一個(gè)Tag Helper。此外,它為我們?cè)?code>CuteTagHelper類中指定的兩個(gè)屬性提供了智能提示。

我們?cè)赥agHelper類中指定的任何公共屬性將在 .cshtml 文件中顯示為一個(gè)屬性。

總結(jié)

  • 使用Tag Helper,我們可以使用屬性擴(kuò)展現(xiàn)有元素或創(chuàng)建新元素

  • 一旦我們創(chuàng)建了一個(gè)Tag Helper,我們通常會(huì)有一個(gè)可重用的屬性或元素

  • MVC附帶的TagHelper類提供了編寫Tag Helpers的方法和屬性

  • Tag Helpers使用命名約定(就像MVC中的控制器一樣),所以如果使用類名稱CoolTagHelper,您將能夠在代碼中使用<cool>標(biāo)簽

以上是“ASP.NET Core MVC如何自定義Tag Helpers”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI