Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TagHelper ModelExpression元数据中不存在描述属性文本_C#_Asp.net Core_Asp.net Core Tag Helpers - Fatal编程技术网

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”)]

谢谢!那是很难找到的。