2013-05-09 2 views
8

Я столкнулся с scenerio, чтобы настроить DataAnnotations в веб-приложении динамических данных. Это scenerio:Настройка аннотаций данных в динамических данных

[Display (Name = "DispName")]

общественная строка Dname {получить; набор;}

Вместо жесткого кодирования Name = "DispName" для отображения DataAnnotation, я хочу получить некоторую ценность из базы данных и установить int атрибут Name. как:

[Display (Name = SomeValueFromDB)]

общественная строка Dname {получить; набор;}

Есть ли способ, чтобы показать имени атрибута Display DataAnnotation из базы данных вместо от жесткого кодирования его значения?

Спасибо заранее,

Суджит

ответ

11

Я нашел решение. Но это применимо только если мы строим приложение:

Создать пользовательский класс (Say: CustomDisplayNameAttribute), который наследуется DisplayNameAttribute. И назовите это имя класса как атрибут отображения (здесь «CustomDisplayName») над именем свойства.

Устанавливая атрибут DataAnnotation for Display, опустите эту часть «Атрибут» из имени класса. то есть. атрибут DataAnnotation 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"; 
     } 
    } 

Надеется, что это помогает всем ....

Счастливого Coding ....

+2

спасибо Суджиту. Мне тоже нужно то же самое :) – BonDaviD

+1

это очень полезно, теперь я могу использовать несколько языков без особых усилий –