2013-05-09 9 views
8

Ich bin auf eine Szenerie gestoßen, um DataAnnotations in Dynamic Data Web Application anzupassen. Dies ist der scenerio:Anpassen von Datenanmerkungen in dynamischen Daten

[Display (Name = "DispName")]

public string DName {get; set;}

Statt hartzucodieren Name = "DispName" für Anzeige DataAnnotation, ich möchte einen Wert von DataBase abrufen und int das Attribut Name einfügen. wie:

[Display (Name = SomeValueFromDB)]

public string DName {get; set;}

Gibt es eine Möglichkeit das Attribut Name der Anzeige DataAnnotation aus der Datenbank zu zeigen, statt Hardcoding seinen Wert?

Vielen Dank im Voraus,

Sujith

Antwort

11

fand ich eine Lösung. Aber dies gilt nur, wenn wir die Anwendung zu erstellen:

eine benutzerdefinierte Klasse erstellen (Sprich: CustomDisplayNameAttribute), die Displayname erbt. Und nennen Sie diesen Klassennamen als Anzeigeattribut (hier "CustomDisplayName") über dem Namen der Eigenschaft.

Wenn Sie das DataAnnotation-Attribut für das Display-Attribut festlegen, lassen Sie den Teil "Attribute" aus dem Klassennamen aus. dh. Das Attribut DataAnnotation für Display wird CustomDisplayName (nicht CustomDisplayNameAttribute) sein.

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"; 
     } 
    } 

Hoffnung das alles hilft ....

Glücklich Coding ....

+2

danke Sujith. Ich brauche auch das gleiche :) – BonDaviD

+1

das ist sehr nützlich, jetzt kann ich mehrere Sprachen ohne viel Aufwand verwenden –