以编程方式将属性应用于属性

时间:2011-10-27 15:53:58

标签: asp.net-mvc-3 c#-4.0

我正在使用业务对象的API,我无法访问代码。我直接在剃刀视图上使用这些对象,并希望能够在实例化对象后应用我的自定义displayName属性。

所以,而不是:

[DisplayName("First Name")]
public string GivenName;

我想这样做:

Profile.GivenName.DisplayName("FirstName");

我理解如何创建自定义属性,但是在编写程序时遇到了麻烦。

一旦我能做到这一点,我就可以应用更多的DataAnnotations。

2 个答案:

答案 0 :(得分:2)

为什么不从业务对象派生一个类并使用MetaDataType Attribute

[MetadataType(typeof(IMyAttributes))
public DerivedClass : BusinessClass
{
}

public interface IMyAttributes
{
  [Required]
  public string Name { get; set; }
}

答案 1 :(得分:0)

您可以创建自己的ModelMetadataProvider并让它从其他来源查找元数据。

请在此处查看摘要类:http://msdn.microsoft.com/en-us/library/system.web.mvc.modelmetadataprovider.aspx

默认提供程序使用DataAnnotations,但您可以轻松编写一个查看SQL数据库或XML文件或类似内容的提供程序。