gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:21:06 26 4
gpt4 key购买 nike

我一直在 Google 上查看 taghelpers 的示例,但找不到我正在寻找的任何示例。

我有以下代码:

<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>

但是我不确定是否编写包含其他标签帮助程序的标签帮助程序

  1. 可能吗?
  2. 如果可能,请提供上述代码示例

编辑:它与存储 variables 不同。在自定义标签帮助程序中,但我想调用其他自定义标签帮助程序或现有标签帮助程序。

最佳答案

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

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

相关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/

关于asp.net-core - 如何编写包含其他标记帮助程序的自定义 ASP.NET 5 标记帮助程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com