2010-01-13 9 views
1

J'ai une application ASP.NET MVC, où j'ai des interfaces pour chaque modèle de vue.Modèle ASP.NET MVC par défaut sur le poste

Sur une vue appelée/produit/Détails/50 Je peux modifier les détails pour le produit avec id = 50.

J'utilise des vues fortement typées, avec le type étant IProduct. J'utilise Castle Windsor pour faire DI. Lorsque je publie le formulaire d'édition dans la vue/Product/Details/50, l'instance IProduct prend par défaut la valeur définie dans la méthode HttpGet appelée Details (int id) dans le même contrôleur. Je suppose que c'est quelque chose à voir avec modelbinding. Si je change la méthode HttpPost Détails (produit IProduct) à Détails (produit du produit), il semble fonctionner correctement.

Des idées?

+0

Y at-il une raison particulière pour laquelle vous utilisez des interfaces pour vos viewmodels? Personnellement, je pense que les viewmodels devraient tous être de simples objets POCO sans fonctionnalité, c'est-à-dire sans besoin d'interface. – Charlino

+0

Aucune raison. Je vais abandonner les interfaces. Ne vaut pas le travail supplémentaire. – MartinHN

Répondre

1

Le problème ici est que lorsque nous rencontrons IProduct, nous ne savons pas quel type à instancier. Nos classeurs ne s'intègrent pas avec votre conteneur DI. Pour la plupart, je suis d'accord avec Charlino, vos modèles de domaine devraient probablement être basés sur l'interface, mais les objets que vous modèlez devraient être des objets POCO simples et stupides qui représentent les valeurs affichées dans le formulaire.

+0

J'ai effectivement pensé à jeter les interfaces, car je pense que la valeur que je reçois ne vaut pas le travail supplémentaire. – MartinHN

Questions connexes