C# TagHelper ModelExpression元数据中不存在描述属性文本
正在尝试编写自定义标记帮助器以显示模型属性的C# TagHelper ModelExpression元数据中不存在描述属性文本,c#,asp.net-core,asp.net-core-tag-helpers,C#,Asp.net Core,Asp.net Core Tag Helpers,正在尝试编写自定义标记帮助器以显示模型属性的说明属性。否则一切似乎都正常工作,但描述文本没有传递到我的ModelExpression元数据,它仍然是null 这是一个asp.net core 2.1应用程序。我在TagHelper的进程中遇到了一个断点,所以它正在运行。DisplayName属性在.Metadata的中是正确的,因此的模型表达式可以正确解析 模型是在使用它的代码之外的另一个程序集中定义的,这会是一个问题吗 型号: public class MyModel { [Descrip
说明
属性。否则一切似乎都正常工作,但描述文本没有传递到我的ModelExpression元数据,它仍然是null
这是一个asp.net core 2.1应用程序。我在TagHelper的进程中遇到了一个断点,所以它正在运行。DisplayName
属性在.Metadata的中是正确的,因此的模型表达式可以正确解析
模型是在使用它的代码之外的另一个程序集中定义的,这会是一个问题吗
型号:
public class MyModel {
[Description("a description")]
[DisplayName("display name")]
public string MyProperty {get; set;}
}
TagHelper:
[HtmlTargetElement("span", Attributes = AttributeName)]
public class DescriptionTagHelper : TagHelper
{
private const string AttributeName = "asp-description-for";
/// <summary>
/// An expression to be evaluated against the current model.
/// </summary>
[HtmlAttributeName(AttributeName)]
public ModelExpression For { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (output == null)
{
throw new ArgumentNullException(nameof(output));
}
if (!output.IsContentModified)
{
output.Attributes.SetAttribute("class", "text-muted");
output.Content.SetContent(For.Metadata.Description);
}
}
}
[HtmlTargetElement(“span”,Attributes=AttributeName)]
公共类DescriptionTagHelper:TagHelper
{
私有常量字符串AttributeName=“asp描述”;
///
///要根据当前模型计算的表达式。
///
[HtmlAttributeName(AttributeName)]
{get;set;}的公共模型表达式
公共覆盖无效进程(TagHelperContext上下文,TagHelperOutput输出)
{
if(上下文==null)
{
抛出新ArgumentNullException(nameof(context));
}
if(输出==null)
{
抛出新ArgumentNullException(nameof(output));
}
如果(!output.IsContentModified)
{
output.Attributes.SetAttribute(“类”,“文本静音”);
output.Content.SetContent(For.Metadata.Description);
}
}
}
用法:
<span asp-description-for="MyModel.MyProperty"></span>
使用intellisense,我可以看到.Metadata.Attributes的集合包含一个具有正确文本的DescriptionAttribute
。假设描述元数据应该是这个元数据,我错了吗?已解决,从系统中发现。asp.net核心不支持ComponentModel.DescriptionAttribute
,和System.ComponentModel.DataAnnotations.DisplayAttribute
具有一个Description
属性,该属性填充ModelExpression
这是一种很难找到的文件,希望有人在谷歌搜索找到帮助这里
tl;dr-将[Description(“blah”)]
更改为[Display(Description=“blah”)]
谢谢!那是很难找到的。