在代码中访问DataAnnotations AdditionalMetadata

时间:2013-10-21 10:32:15

标签: asp.net-mvc-3 data-annotations

我很难找到这个问题的简单答案,希望那里有人可以提供帮助吗?

我有一个系统首先使用MVC3代码和EF4.1。

我有很多模型,我试图覆盖DbContext.SaveChanges来提供审计工具。

某些高容量列应从审核中排除。

我原本希望我可以使用AdditionalMetadata标签......

public class User : IAuditable
{
    [Key]
    public int UserID { get; set; }
    public string Name { get; set; }
    public string DisplayName { get; set; }
    [AdditionalMetadata("IgnoreAudit", true)]
    public DateTime? LastActive { get; set; }
}

然后在我的审计代码中使用类似......

的内容
bool AuditThis = ModelMetadata
   .FromLambdaExpression(dbEntry.Property(propertyName), null)
   .AdditionalValues("IgnoreAudit");

确定是否记录更改。

显然,这段代码失败了,因为它从视图中被拍摄(并且已经改变了!)。

我的问题是。可以在ViewContext之外读取ModelMetaData,还是我咆哮错误的树?

感谢您花时间阅读。

1 个答案:

答案 0 :(得分:0)

我在stackoverflow here上找到了指针,但我需要稍微不同的

var metaData = ModelMetadataProviders
    .Current.GetMetadataForProperty(null, objType, propertyName);