我一直在谷歌上查看关于标记主题的示例,但无法找到我正在寻找的任何示例。
我有以下代码:
<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不同,但我想调用其他自定义标记或现有标记。
答案 0 :(得分:2)
如果我们检查您拥有的内容,您使用的唯一属性是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 expression,
string labelText,
object htmlAttributes);
TagBuilder GenerateTextBox(
ViewContext viewContext,
ModelExplorer modelExplorer,
string expression,
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.
}
}
这是一个包含从TagHelpers生成Bootstrap HTML的示例代码的repo: