首先声明了Models 文件夹下声明一个类 

.net core 下的TagHelper自定义新手提醒_文件夹

1   public class WebsiteContext2     {3         public Version Version { get; set; }4         public int CopyrightYear { get; set; }5         public bool Approved { get; set; }6         public int TagsToShow { get; set; }7     }

.net core 下的TagHelper自定义新手提醒_文件夹

    接下来他的自定义TagHelper要使用这个类 

.net core 下的TagHelper自定义新手提醒_文件夹

 1   public class WebsiteInformationTagHelper : TagHelper 2     { 3         public WebsiteContext Info { get; set; } 4  5       public override void Process(TagHelperContext context, TagHelperOutput output) 6       { 7          output.TagName = "section"; 8          output.Content.SetHtmlContent( 9 $@"<ul><li><strong>Version:</strong> {Info.Version}</li>10 <li><strong>Copyright Year:</strong> {Info.CopyrightYear}</li>11 <li><strong>Approved:</strong> {Info.Approved}</li>12 <li><strong>Number of tags to show:</strong> {Info.TagsToShow}</li></ul>");13          output.TagMode = TagMode.StartTagAndEndTag;14       }15    }

.net core 下的TagHelper自定义新手提醒_文件夹

     在接下来在前台他要是用这个TagHelper

.net core 下的TagHelper自定义新手提醒_文件夹

 1 @using AuthoringTagHelpers.Models 2 @{ 3     ViewData["Title"] = "About"; 4 } 5 <h2>@ViewData["Title"].</h2> 6 <h3>@ViewData["Message"]</h3> 7  8 <p bold>Use this area to provide additional information.</p> 9 10 <bold> Is this bold?</bold>11 12 <h3> web site info </h3>13 <website-information info="new WebsiteContext {14                                     Version = new Version(1, 3),15                                     CopyrightYear = 1638,16                                     Approved = true,17                                     TagsToShow = 131 }" />

.net core 下的TagHelper自定义新手提醒_文件夹

      这个就是他的使用过程 。

    如果 按照他的说明这样做完之后你会发现根本不行,浏览器报错  错误很明显 无法将Version类型转化为String类型

.net core 下的TagHelper自定义新手提醒_public_07

好了这里改一下 

.net core 下的TagHelper自定义新手提醒_文件夹

<Website-Information info="new WebSiteContext {                                   
                                  Version = new string('1', 3),
                                    CopyrightYear = 1638,
                                    Approved = true,
                                    TagsToShow = 131 }" ></Website-Information>

.net core 下的TagHelper自定义新手提醒_文件夹

 

 这会测试的时候改完之后就可以直接运行了。原来在改之后还会出现一个错误。  <Website-Information info="......"></Website-Information>会报出无法识别 info这个属性, 给大家分析一下 首先Website-Information这个Tag是原本都没有的,是我们自己定义的。所以它本身也就不存在什么属性,而这里直接使用它的info属性。它肯定无法识别,所以在这里我们需要对其自定义的时候加上这个属性,让编译器能够识别 。

.net core 下的TagHelper自定义新手提醒_文件夹

public class WebsiteInfomationTagHelper : TagHelper
    {        public WebSiteContext Info { get; set; }        public override void Process(TagHelperContext context, TagHelperOutput output)
        {

            output.TagName = "section";            //如果说添加的属性不存在用add方法
            output.Attributes.Add("info", Info);            //添加的属性存在则用setAttribute方法            //output.Attributes.SetAttribute("info", info);            output.Content.SetHtmlContent(
                $@"<ul><li><strong>Version:</strong> {Info.Version}</li>
<li><strong>Copyright Year:</strong> {Info.CopyrightYear}</li>
<li><strong>Approved:</strong> {Info.Approved}</li>
<li><strong>Number of tags to show:</strong> {Info.TagsToShow}</li></ul>"
                );
            output.TagMode=TagMode.StartTagAndEndTag;

        }
    }

.net core 下的TagHelper自定义新手提醒_文件夹

    这样进行一番修改之后就可以运行了 这是运行的结果

.net core 下的TagHelper自定义新手提醒_public_12