动态数据中自定义数据注释

10

我遇到了一个情况,需要在动态数据 Web 应用程序中自定义 DataAnnotations。这是这个情况:

[Display(Name="DispName")]

public string DName{get;set;}

我想从数据库中获取一些值并将其适配到 Name 属性中,而不是为 Display DataAnnotation 硬编码 Name="DispName"。比如:

[Display(Name=SomeValueFromDB)]

public string DName{get;set;}

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

先行致谢,

Sujith

1个回答

12

我找到了一个解决方案,但是这仅适用于我们构建应用程序的情况:

创建一个自定义类(比如:CustomDisplayNameAttribute),该类继承 DisplayNameAttribute。并且在属性名上方调用该类名称作为显示属性(此处为 "CustomDisplayName")。

在设置显示属性的 DataAnnotation 时,省略类名中的 "Attribute" 部分。即,显示属性的 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";
        }
    }

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

愉快的编码....


1
这非常有用,现在我可以轻松使用多种语言。 - Arun Prasad E S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接