net core 正确自定义 TagHelper

Fork Me On Github

net core 正确自定义 TagHelper

自定义一个 友情链接 的tag

创建一个数据源

c#
                    
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;
        }
    }
}
1234567891011121314151617181920

定义 TagHelper

c#
                        
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());
        }
    }
}
123456789101112131415161718192021222324

使用

先在 _ViewImports.cshtml 添加以下代码

html
  
@addTagHelper *, netdream
12

注意 netdream 是本项目的程序集名称,并不是命名空间

没看源码,大致猜测这个是动态引用的即使用时临时检索 程序的dll 引入tagHelper

程序集名称查看方法:

右键项目-> 属性 -> 应用程序 -> 程序集名称(N):

然后在 Home.cshtml 使用

html
  
<friend-link title="友情链接"></friend-link>
12

最终就会输出友情链接了

源码

点击查看全文
0 248 0