10

我遇到了一个在动态数据 Web 应用程序中自定义 DataAnnotations 的场景。这是场景:

[显示(名称=“显示名称”)]

公共字符串 DName{get;set;}

我不想为 Display DataAnnotation 硬编码 Name="DispName",而是想从 DataBase 中获取一些值并适应 Name 属性。喜欢:

[显示(名称=SomeValueFromDB)]

公共字符串 DName{get;set;}

有没有办法从数据库中显示 Display DataAnnotation 的 Name 属性,而不是硬编码它的值?

提前致谢,

苏吉特

4

1 回答 1

12

我找到了解决方案。但这仅在我们构建应用程序时适用:

创建一个继承DisplayNameAttribute的自定义类(例如: CustomDisplayNameAttribute ) 。并将该类名称称为属性名称上方的显示属性(此处为“ CustomDisplayName ”)。

在为 Display 属性设置 DataAnnotation 时,从类名中省略“Attribute”部分。IE。Display 属性的 DataAnnotation 将是CustomDisplayName(而不是 CustomDisplayNameAttribute)。

  public class DomainClass
{
    [CustomDisplayName("")]
    public object PropertyName{ get; set; }
}



public class CustomDisplayNameAttribute : DisplayNameAttribute
    {
        public CustomDisplayNameAttribute(string value)
            : base(GetMessageFromResource(value))
        { }

        private static string GetMessageFromResource(string value)
        {
            return "Custom Display Name";
        }
    }

希望这对大家有帮助....

快乐的编码......

于 2013-05-09T10:44:22.923 回答