首先声明了Models 文件夹下声明一个类
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 }
接下来他的自定义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 $@"
- Version: {Info.Version} 10
- Copyright Year: {Info.CopyrightYear} 11
- Approved: {Info.Approved} 12
- Number of tags to show: {Info.TagsToShow}
在接下来在前台他要是用这个TagHelper
1 @using AuthoringTagHelpers.Models 2 @{ 3 ViewData["Title"] = "About"; 4 } 5@ViewData["Title"].
6@ViewData["Message"]
7 8 Use this area to provide additional information. 9 10Is this bold? 11 12web site info
13
这个就是他的使用过程 。
如果 按照他的说明这样做完之后你会发现根本不行,浏览器报错 错误很明显 无法将Version类型转化为String类型
好了这里改一下
这会测试的时候改完之后就可以直接运行了。原来在改之后还会出现一个错误。 <Website-Information info="......"></Website-Information>会报出无法识别 info这个属性, 给大家分析一下 首先Website-Information这个Tag是原本都没有的,是我们自己定义的。所以它本身也就不存在什么属性,而这里直接使用它的info属性。它肯定无法识别,所以在这里我们需要对其自定义的时候加上这个属性,让编译器能够识别 。
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( $@"
- Version: {Info.Version}
- Copyright Year: {Info.CopyrightYear}
- Approved: {Info.Approved}
- Number of tags to show: {Info.TagsToShow}
这样进行一番修改之后就可以运行了 这是运行的结果