Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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# 使用ModelMetadata获取所有属性_C#_Asp.net Mvc - Fatal编程技术网

C# 使用ModelMetadata获取所有属性

C# 使用ModelMetadata获取所有属性,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个从web服务生成的分部类。我将ModelMetadata添加到此类,如下所示: // Automatically generated code public partial class MyClass { public string FIELD_ONE ... public DateTime? FIELD_TWO ... } // My code [MetadataType(typeof(MyMetaDataClass))] public partial class

我有一个从web服务生成的分部类。我将
ModelMetadata
添加到此类,如下所示:

// Automatically generated code

public partial class MyClass
{
    public string FIELD_ONE ...
    public DateTime? FIELD_TWO ...
}

// My code

[MetadataType(typeof(MyMetaDataClass))]
public partial class MyClass
{
}

public class MyMetaDataClass
{
    [Display(Name="Field One")] 
    public string FIELD_ONE;

    [Display(Name="Field Two")] 
    public DateTime? FIELD_TWO;
}
现在,我想获取
MyClass
的所有属性,这些属性具有元数据显示属性,即
FIELD\u ONE
FIELD\u TWO

我试过这样的方法

typeof(MyClass).GetProperties().Where(p => Attribute.IsDefined(typeof(DisplayAttribute))
当然,属性不在
MyClass
的属性上。我也试过:

ModelMetadata mmd = ModelMetadata.FromLambdaExpression(m => pi.GetValue(m, null), Html.ViewData);
但是我得到一个错误:“模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。”

如果我可以从
MyClass
MyMetadataClass
获取属性名,那么我就可以从
MyClass
获取相同名称的属性


这是可能的,还是我找错人了?

你到底想做什么?如果您想覆盖默认元数据提供程序的功能,那么最好使用自己的实现替换
DataAnnotationsModelMetadataProvider
。下面是一些示例代码:

在这里,作者添加了对自己自定义属性的支持,但您也可以轻松地覆盖
displaytribute
的默认实现


如果这没有帮助,请详细说明您试图实现的目标。

在示例中,我希望能够自动迭代“MyClass”对象上的
FIELD\u ONE
FIELD\u TWO