net core 正确自定义 TagHelper
2019年10月15日 19:47
编程技术
net core 正确自定义 TagHelper
自定义一个 友情链接 的tag
创建一个数据源
namespace NetDream.Models
{
    public class FriendLinkModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Url { get; set; }
        public static List<FriendLinkModel> All()
        {
            var data = new List<FriendLinkModel>();
            data.Add(new FriendLinkModel()
            {
                Name = "ZoDream",
                Url = "https://zodream.cn",
            });
            return data;
        }
    }
}
定义 TagHelper
namespace NetDream.Base.TagHelpers
{
    public class FriendLinkTagHelper : TagHelper
    {
        public string Title = "友情链接";
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "div";
            output.Attributes.Add("class", "friend-link");
            var html = new StringBuilder();
            html.AppendFormat("<div>{0}</div><div>", Title);
            var items = FriendLinkModel.All();
            foreach (var item in items)
            {
                html.AppendFormat("<a href=\"{0}\" target=\"_blank\" rel=\"noopener noreferrer\">{1}</a>", item.Url, item.Name);
            }
            html.Append("</div>");
            output.Content.SetHtmlContent(html.ToString());
        }
    }
}
使用
先在 _ViewImports.cshtml 添加以下代码
@addTagHelper *, netdream
注意 netdream 是本项目的程序集名称,并不是命名空间
没看源码,大致猜测这个是动态引用的即使用时临时检索 程序的dll 引入tagHelper
程序集名称查看方法:
右键项目-> 属性 -> 应用程序 -> 程序集名称(N):
然后在 Home.cshtml 使用
<friend-link title="友情链接"></friend-link>