如果我们检查您拥有的内容,您使用的唯一属性是 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:
https://github.com/dpaquette/TagHelperSamples/blob/master/TagHelperSamples/src/TagHelperSamples.Bootstrap/ https://github.com/dpaquette/TagHelperSamples/blob/master/TagHelperSamples/src/TagHelperSamples.Bootstrap/