Ich baue einen benutzerdefinierten HTML.LabelFor
Helfer, der so aussieht:
Um den richtigen Namen für die Eigenschaft zu erhalten, verwende ich den folgenden Code:
%Vor%Und auf der Eigenschaft der ModelView Klasse habe ich:
%Vor%Das Problem ist, dass ich auch eine Beschreibung brauche. Es gibt ein Attribut namens Display und das hat Name und Beschreibung, aber ich sehe nicht, wie man das mit der Metadatenvariablen im obigen Code extrahiert?
Haftungsausschluss: Folgendes funktioniert nur mit ASP.NET MVC 3 (siehe das Update unten, wenn Sie frühere Versionen verwenden)
Angenommen, das folgende Modell:
%Vor%Und die folgende Ansicht:
%Vor%In Ihrem benutzerdefinierten Hilfsprogramm können Sie diese Informationen aus den Metadaten abrufen:
%Vor% Hinweis: Die Verwendung von [DisplayName("foo")]
und [Display(Name = "bar")]
für dieselbe Modelleigenschaft ist redundant, und der im Attribut [Display]
verwendete Name hat Vorrang in metadata.DisplayName
.
UPDATE:
Meine vorherige Antwort funktioniert nicht mit ASP.NET MVC 2.0. Es gibt Paare von Eigenschaften, die nicht standardmäßig mit DataAnnotations
in .NET 3.5 gefüllt werden können, und Description
ist einer davon. Um dies in ASP.NET MVC 2.0 zu erreichen, können Sie einen benutzerdefinierten Modellmetadatenanbieter verwenden:
was Sie in Application_Start
registrieren würden:
und dann sollte der Helfer wie erwartet funktionieren:
%Vor%Tags und Links c# attributes reflection asp.net-mvc-2 html-helper