加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 如何编写包含其他标记帮助程序的自定义ASP.NET

发布时间:2020-12-16 03:24:09 所属栏目:asp.Net 来源:网络整理
导读:我一直在谷歌上看标签上的例子,但找不到我正在寻找的任何例子. 我有以下代码: div class="form-group" label asp-for="PersonName" class="col-md-2 control-label"/label div class="col-md-10" input asp-for="PersonName" class="form-control" / span a
我一直在谷歌上看标签上的例子,但找不到我正在寻找的任何例子.

我有以下代码:

<div class="form-group">
    <label asp-for="PersonName" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="PersonName" class="form-control" />
        <span asp-validation-for="PersonName" class="text-danger"></span>
    </div>
</div>

我要做的是用类似的东西替换它

<bootstraprow asp-for="PersonName"></bootstraprow>

但是,我不确定要编写包含其他标记的taghelper

>有可能吗?
>如果可能,请提供上述代码示例

编辑:这与在自定义标记中存储variables不同,但我想调用其他自定义标记或现有标记.

解决方法

如果我们检查您拥有的内容,您使用的唯一属性是PersonName.至于标记本身,其他一切都是很好的旧HTML.

所以你不需要更换任何东西.你需要的是拥有依赖于IHtmlGenerator的构造函数.这将自动注入,您将能够根据您的模型生成不同的标签.

相关的IHtmlGenerator签名:

public interface IHtmlGenerator
{
    ...

    TagBuilder GenerateValidationMessage(
        ViewContext viewContext,string expression,string message,string tag,object htmlAttributes);
    TagBuilder GenerateLabel(
        ViewContext viewContext,ModelExplorer modelExplorer,string labelText,object htmlAttributes);
    TagBuilder GenerateTextBox(
        ViewContext viewContext,object value,string format,object htmlAttributes);
    ...
}

就是这样!

这里有一些代码可以捕获基本标记:

[HtmlTargetElement("bootstraprow")]
public BootstrapRowTagHelper: TagHelper
{
    protected IHtmlGenerator Generator { get; set; }
    public InputTagHelper(IHtmlGenerator generator)
    {
        Generator = generator;
    }

    [HtmlAttributeName("asp-for")]
    public ModelExpression For { get; set; }

    [HtmlAttributeNotBound]
    [ViewContext]
    public ViewContext ViewContext { get; set; }

    public override void Process(TagHelperContext context,TagHelperOutput output)
    {
        //todo: write your html generating code here.
    }
}

这是一个包含示例代码的repo,它从TagHelpers生成Bootstrap HTML:

https://github.com/dpaquette/TagHelperSamples/blob/master/TagHelperSamples/src/TagHelperSamples.Bootstrap/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读