gpt4 book ai didi

c# - 我如何使用标签助手来获取任意元素上的模型属性名称?

转载 作者:太空宇宙 更新时间:2023-11-03 23:06:36 26 4
gpt4 key购买 nike

ASP.NET 核心。

 <label asp-for="FooModelProperty">...</label>

这会生成一个具有适当属性名称的表单控件。选择、输入等也是如此。

但我需要在某个随机元素上使用该名称,例如div,所以我可以在 JavaScript 中使用它。问题是 asp-for 标签助手对任意元素不起作用。

那么我该怎么做呢:

<div asp-for="FooModelProperty">...</div>

最佳答案

创建 ModelExpression 类是为了帮助处理此类情况。您可以将它作为属性添加到您的 TagHelper 并从那里访问属性名称。

这是一个例子:

[HtmlTargetElement("*", Attributes = forName)]
public class NameAppenderTagHelper : TagHelper
{
private const string forName = "na-for";

[HtmlAttributeName(forName)]
public ModelExpression PropertyName { get; set; }

public override void Process(TagHelperContext context, TagHelperOutput output)
{
// add the property name as an attribute to the element
output.Attributes.Add("data-property-name", PropertyName.Name);

// if you'd like the [Display] name value, you can use this:
// output.Attributes.Add("data-property-name", PropertyName.Metadata.DisplayName);
base.Process(context, output);
}
}

像这样在 Razor 中使用时:

<div na-for="MyProperty"></div>

它会输出:

<div data-property-name="MyProperty"></div>

关于c# - 我如何使用标签助手来获取任意元素上的模型属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41003192/

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