• 【ASP.NET Core】标记帮助器——替换元素名称


    标记帮助器不仅可以给目标元素(标记)插入(或修改)属性,插入自定义的HTML内容,在某些需求中还可以替换原来标记的名称。

    比如我们在使用 Blazor 时很熟悉的 Component 标记帮助器。在 Razor 文档中你将使用 元素来设置要呈现的组件。而在实际处理时,会去掉 元素,并呈现组件的HTML内容。

    下面咱们举两个例子。

    第一个比较简单,自定义的元素是 ,生成的元素是

    复制代码
    [HtmlTargetElement("textBox", TagStructure = TagStructure.WithoutEndTag)]
    public class TextInputTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            // 将标记名称改为 input
            output.TagName = "input";
            // 设置 type 属性
            output.Attributes.SetAttribute("type", "text");
        }
    }
    复制代码

    这个不难理解,首先我们用的是候,在 Razor 文档使用的是元素是 ,而最后呈现出来的 HTML 是 元素。咱们就把它弄得像个控件那样用,是不是有点以前 ASP.NET 的味儿了?以前是有个前缀 asp:TextBox。

    TagStructure.WithoutEndTag 的意思是指定这个标记没有结束标签,就像

    Razor 文档中要用 @addTagHelper 指令导入一下。

    @addTagHelper *, TestApp

    TestApp 是我这个程序集的名称,它导入此程序集下所有标记帮助器。

    用起来也方便。

    运行之后,生成这样的 HTML。

    <input type="text">

    咱们确实可以让它更像传统 ASP.NET。

    @addTagHelper *, TestApp
    @tagHelperPrefix "asp:"
    
    <div>
        <asp:textBox />
    div>

    @tagHelperPrefix 就是为标记添加一个前缀,这里指定的是“asp:”,所以用的时候就真的捡到“童年回忆”了。想当年,ASP.NET 就是这么用的。

     

    下面再举一例,咱们做 RadioButton(单选按钮)。选项之间互斥,同一个分组中你只能选择一项。在 HTML 中是 ,它没有“分组”属性,而是通过 name 属性来分组。name 相同的就是同一组,互斥。

    注意的是, 只显示个圈圈让你可以选中,可不包含选项文本。一般我们会给它配个

    所以,咱们实现的帮助器要生成一个

    ,里面包含
  • 相关阅读:
    为什么重写equals方法,还必须要重写hashcode方法,重写equals()和hashCode()方法实例
    java-mybatis-自定义interceptor拦截器-获取原生sql补全公共参数
    Linux的一些知识(7)
    vite vue3配置eslint和prettier以及sass
    最长公共前缀
    大一作业HTML个人网页作业(宠物狗)
    百利天恒更新招股书:上半年收入约3亿元,持续加大研发投入
    趣说 Mysql内存篇 Buffer Pool
    树莓派Raspberrypi安装Kali Linux保姆教程(通过树莓派安装ARM Kali教程)
    710. 黑名单中的随机数
  • 原文地址:https://www.cnblogs.com/tcjiaan/p/17157309.html