2013-05-09 18 views
8

Natknąłem się na scenerio, które dostosowywało DataAnnotations w aplikacji sieciowej danych dynamicznych. To scenerio:Dostosowywanie adnotacji danych w danych dynamicznych

[Display (Name = "DispName")]

public string dname {get; set;}

Zamiast hardcoding name = "DispName" na wyświetlaczu DataAnnotation, chcę pobrać pewną wartość z DataBase i dopasować do atrybutu Name. jak:

[Display (Name = SomeValueFromDB)]

public string dname {get; set;}

Czy istnieje jakiś sposób, aby pokazać atrybut nazwa reklamowej DataAnnotation z bazy danych zamiast z hardcoding jego wartości?

Dzięki z góry,

Sujith

Odpowiedz

11

znalazłem rozwiązanie. Jest to jednak zastosowanie tylko wtedy budujemy aplikację:

utworzyć klasę niestandardową (słownie: CustomDisplayNameAttribute), która dziedziczy DisplayNameAttribute. I nazwij tę nazwę klasy jako atrybut wyświetlania (tutaj "CustomDisplayName") nad nazwą właściwości.

Podczas ustawiania atrybutu DataAnnotation for Display należy pominąć część "Attribute" od nazwy klasy. to znaczy. atrybut DataAnnotation for Display będzie miał postać CustomDisplayName (nie 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"; 
     } 
    } 

Nadzieja pomaga to wszystko ....

Szczęśliwy Coding ....

+2

dziękuję Sujith. Też potrzebuję tego samego :) – BonDaviD

+1

jest to bardzo przydatne, teraz mogę używać wielu języków bez większego wysiłku –