2009-08-07 5 views

Antwort

10

Ich glaube, was Sie suchen ist MetadataTypeAttribute. Dies ist nicht spezifisch für MVC, sondern Teil des in 3.5 eingeführten Namespace DataAnnotations. Sie können damit Mitglieder einer partiellen Klasse außerhalb der Klasse schmücken.

Wenn Sie beispielsweise einen generierten partiellen Klassentyp mit dem Namen Customer hatten und diesem Attribute hinzufügen möchten, können Sie ein neues Partial im selben Namespace erstellen und mit dem MetadataType versehen. Erstellen Sie dann die Metadata-Klasse mit übereinstimmenden Attributen und dekorieren Sie sie.

/* Generated class */ 
public partial class Customer 
{ 
    public string Name { get; set; } 
} 


/* MetadataType decorated class */ 
[MetadataType(CustomerMetadata)] 
public partial class Customer 
{ /* ... */ } 


/* Metadata type */ 
public class CustomerMetadata 
{ 
    [Required(ErrorMessage = "Name is required")] 
    public string Name { get; set; } 
} 
+0

Dank Tonnen! Genau das habe ich gebraucht. :) –

+0

Was ist der Punkt in der Trennung der Klassen? – UpTheCreek

+1

Es ist nicht so sehr ein „Punkt“, wie es ein hässliches Problem umgehen, um Umgang mit automatisch generierten Klassen von EF oder LINQ2SQL. Da die Klassendateien erzeugt werden, gibt es keine Möglichkeit, Attribute auf die Eigenschaften anzuwenden, daher wurde eine hacky Alternative geschaffen. –