Question

J'utilise une classe générée comme modèle, et je souhaite ajouter DataAnnotation attribue à certaines de ses propriétés. Comme il est un code généré, je ne veux pas ajouter les annotations directement. Y at-il une autre façon de les attacher à une propriété?

Je considérais faire le modèle d'une interface, et en utilisant une classe partielle pour obtenir la classe générée pour y souscrire. Y at-il une solution moins élaborée, en supposant que cela même travailler?

Était-ce utile?

La solution

Oui, il y a. Vous devez créer la classe de métadonnées qui ont les mêmes propriétés que votre modèle d'origine, et connectez-le à votre modèle avec l'attribut MetadataType:

[MetadataType(typeof(MyModelMetadata))]
public partial class OriginalMyModel
{
}

public class MyModelMetadata
{
    [Required]
    public string MyProperty;  

    // ...
}

Dans l'exemple ebove OriginalModel est votre classe appropriée modèle et MyModelMetadata est une classe utilisée uniquement pour les propriétés annoter. MyModelMetadata devraient avoir les mêmes propriétés que votre modèle a.

Autres conseils

Vous pouvez utiliser l'attribut MetadataType de votre classe:

http://msdn.microsoft.com /en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

Dans la pratique, j'ai vu les métadonnées désynchronisés avec un assez souvent modèle généré, mais, ce qui peut conduire à des maux de tête. Vous voudrez peut-être se pencher sur un mécanisme de validation alternatif au lieu des annotations de données.

Je me sers Validation Courant , ce qui est très facile à ramasser et commencer à utiliser. Il y a même une validation Fluent xVal pièce d'intégration Courant de validation 2.0 (encore en version bêta) que vous pouvez apporter dans votre projet de validation côté client.

Validation Fluent vous permet de définir la validation dans une catégorie distincte. Tout ce que vous devez faire est d'ajouter un attribut à votre classe générée lui disant ce validateur à utiliser, ce qui pourrait être accompli par des classes partielles.

Sinon, vous pouvez créer des modèles spécifiques à la vue qui sont mis en correspondance à partir de votre modèle de domaine qui contiennent des annotations de données. Dans ce cas, simplifier la cartographie en arrière-et-vient en utilisant quelque chose comme AutoMapper . Ensuite, si votre modèle de domaine change, vous obtenez à la compilation des erreurs par rapport à l'approche des métadonnées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top