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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
热点阅读