NetCore TagHelper随笔

TagHelpers 能够让服务端代码参与创建和渲染 HTML 元素,让整个View视图看起来只有Html代码,也让前台开发人员开发的页面直接被后台开发人员使用,而不需要重复的书写代码,这种设计将会成为主流,直接在Html元素上添加对应的标签即可,目前记录下自己遇见的问题(坑)及解决方法。我这边将TagHelper单独放在一个类库中。制作一个公共Select标签,自动填充Select选项。无需前段编写任何代码。

一.nuget引用 Microsoft.AspNetCore.Mvc

二.添加CriySelectTagHelper.cs 继承TagHelper  (所有tagHelper扩展都必须继承 TagHelper) 源代码如下

几个比较容易出问题点:

1.[HtmlTargetElement("criyselect")] 设置前段使用的element名称(严格区分大小写,建议全部小写)

2.[HtmlAttributeName("data")]获取Html设置的属性值(如下图) 没有列出的HTML属性值系统自动添加上。所以这里只设置自己需要操作的属性即可

3.Process和ProcessAsync 为同步和异步加载数据。

namespace CoreExtends.Extends
{
    [HtmlTargetElement("criyselect")]
    public class CriySelectTagHelper : TagHelper
    {
        [HtmlAttributeName("data")]
        public string Data { get; set; }

        [HtmlAttributeName("class")]
        public string _class { get; set; } = "form-control";
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            var db = DBConnect.db;
            List<TSelectParamsEntity> list = db.Queryable<TSelectParamsEntity>().Where(t => t.FNo == Data).OrderBy(t => t.FOrder).ToList();
            output.TagName = "select";
            output.TagMode = TagMode.StartTagAndEndTag;
            output.Attributes.SetAttribute("Data", Data);
            output.Attributes.SetAttribute("class", _class);
            string htmlstr = "";
            if (list.Count > 0)
            {
                foreach (var item in list)
                {
                    htmlstr += "<option value='" + item.FKey + "' >" + item.FValue + "</option>";
                }

            }
            else
            {
                htmlstr = "<option value='-1' disabled=''>" + rs.SelectNodata + "</option>";
            }
            output.Content.SetHtmlContent(htmlstr);
        }
    }
}

三.cshtml页面使用标签

四.引入扩展的TagHelper 如果此步不成功或出错 上面所有操作都是白费~

我这边使用通用页面引用  写在_ViewImports.cshtml 写法如下

1.@using CoreExtends.Extends  扩展类所在命名空间。一定要写全部。多个TagHelper在不同命名空间 都要写入

2.@addTagHelper *,CoreExtends 我的理解是添加查找范围。*代表所有。后面跟类库名称。添加后可以在页面使用智能感知功能。如下

五.TagHelper有很多强大功能。慢慢探索吧~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值