2013-05-09 16 views
8

Mi sono imbattuto in uno scenerio che per personalizzare DataAnnotations in Dynamic Data Web Application. Questo è lo scenerio:Personalizzazione di annotazioni di dati in dati dinamici

[Display (Name = "DispName")]

public string dname {get; set;}

Invece di hardcoding Name = "DispName" per la visualizzazione DataAnnotation, voglio recuperare un valore da DataBase e adattarlo all'attributo Name. come:

[Display (Name = SomeValueFromDB)]

public string dname {get; set;}

C'è un modo per mostrare l'attributo Name del display DataAnnotation dal database invece di hardcoding il suo valore?

Grazie in anticipo,

Sujith

risposta

11

ho trovato una soluzione. Ma questo è applicabile solo se si costruisce l'applicazione:

Creare una classe personalizzata (Di ': CustomDisplayNameAttribute) che eredita DisplayNameAttribute. E chiama il nome della classe come attributo di visualizzazione (qui "CustomDisplayName") sopra il nome della proprietà.

Mentre si imposta DataAnnotation per l'attributo Display, omettere quella parte "Attributo" dal nome della classe. vale a dire. l'attributo DataAnnotation per Display sarà CustomDisplayName (non 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"; 
     } 
    } 

Spero che questo aiuti tutti ....

Felice Coding ....

+2

grazie sujith. Ho anche bisogno dello stesso :) – BonDaviD

+1

questo è molto utile, ora posso usare più lingue senza molto sforzo –

Problemi correlati