6
votes

Validations de basenotation et modelage personnalisé

J'ai géré certaines expériences avec ASP.NET MVC2 et j'ai rencontré un problème intéressant.

J'aimerais définir une interface autour des objets qui seront utilisés comme modèles de l'application MVC. En outre, j'aimerais profiter de la nouvelle base de donnéesAnnotation fonctionnellement en marquant les membres de cette interface avec des attributs de validation.

Donc, si mon site a un objet "photo", je définirai le interface suivante: xxx

et je définirai la mise en œuvre suivante: xxx

mon contrôleur d'application MVC peut inclure des méthodes telles que : xxx

et enfin, afin de lier les photoimpls aux paramètres de ces méthodes d'action, je pourrais implémenter les extensions suivantes à la valeur par défautModelbinder: xxx

Tout semble fonctionner, sauf que la propriété ModelState.isvalid de mon contrôleur ne semble pas remarquer des valeurs non valides (par exemple, NULL) dans les propriétés [requises] de l'implémentation iPhoto.

Je soupçonne que je néglige que je néglige de définir un élément important d'état dans ma mise en œuvre de ma modélisation. Toute astuce?


0 commentaires

3 Réponses :


0
votes

Avez-vous essayé de placer l'attribut [Obligatoire] sur votre modèle et de la réessatation? Il peut avoir du mal à appliquer l'attribut à une interface.


1 commentaires

Merci d'avoir répondu. Il ne semble pas être un problème avec l'emplacement de l'attribut [Obligatoire]. Le problème se poursuit si je déplace les attributs sur le photoimpl, modifiez le contrôleur pour fonctionner sur un photoimpl et modifier le modèle pour agir sur les demandes de photoimpl. Inversement, si j'instruisez mon modèle de modèle de ne pas agir sur le photoimpl et de revenir à la mise en œuvre de la modélisation par défaut, les validations fonctionnent correctement.



8
votes

Après avoir inspecté la source pour system.web.mvc.defaultmodelbinder, on dirait que cela peut être résolu à l'aide d'une approche légèrement différente. Si nous comptons plus fortement sur la mise en œuvre de la base de Binmodel, on dirait que nous pouvons construire un objet photoimpl en tirant toujours les attributs de validation de iPhoto.

Quelque chose comme: xxx


0 commentaires

9
votes

J'ai eu le même problème. La réponse est au lieu de remplacer Binmodel () dans votre classeur de modèle personnalisé, remplacez Createmodel () ... XXX

Vous pouvez ensuite laisser la classe Bindmodel classe de base avec validation: -) < / p>


1 commentaires

Je poursuis une solution pour la liaison avec une vue de vue complexe avec des produits de basenotations et cela est parfait merci!