我遇到了一个在动态数据Web应用程序中自定义DataAnnotations的场景。这是场景:
[显示(名称= “DispName”)]
公开字符串DName {get; set;}
我没有为Display DataAnnotation硬编码Name =“DispName”,而是想从DataBase中获取一些值并使其适合于Name属性。像:
[显示(名称= SomeValueFromDB)]
公开字符串DName {get; set;}
有没有办法从数据库中显示Display DataAnnotation的Name属性而不是硬编码它的值?
提前致谢,
Sujith
答案 0 :(得分:11)
我找到了解决方案。但这仅适用于我们构建应用程序:
创建一个继承 DisplayNameAttribute 的自定义类(说: CustomDisplayNameAttribute )。并将该类名称称为属性名称上方的显示属性(此处为“ CustomDisplayName ”)。
在为Display属性设置DataAnnotation时,从类名中省略“Attribute”部分。即。 DisplayAnnotation for Display属性将为 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";
}
}
希望这有助于所有人......
快乐编码......