2009-03-27 7 views
0

J'ai un module d'entrée de données où ajouter les informations de mon produit et de ses sous informations telles que:façon MVC de gérer la saisie des données

informations de base produit prix des produits d'information Détails sur le prix des produits

info prix et les détails de prix sont liés au produit et sont des listes

Dans mon approche de formulaires Web, je stockais mon objet produit principal sur l'état d'affichage et je remplissais ses informations de prix et ses détails tout en effectuant des ajax postbacks. De cette façon, je peux créer un module compact qui est très convivial en termes de définition d'un grand nombre de données d'un endroit sans avoir besoin d'entrer ces données à partir de modules séparés. Et quand j'ai fini je ferais un product.save() et cela conserverait toutes les données aux tables respectives sur db.

Maintenant, je construis une application similaire sur le framework .net mvc et réfléchis à ce qui serait la bonne façon de gérer cela sur mvc.

Je ne résonne pas à stocker tout cela sur le côté client jusqu'à ce que je clique sur Enregistrer. Et enregistrer sur la base de données après chaque action me rappelle les jours où je codais sur asp.

apprécieront vos entrées sur les moyens d'aborder ce cadre sur mvc

+0

Quel est le problème avec le stockage côté client? –

+0

vous vous rendez compte que le stocker dans le ViewState le stockait réellement du côté de client? –

+0

Le stockage côté client semble être en train de devenir une maintenance supplémentaire. Pour gérer correctement, j'ai besoin de créer une version JS de mes classes et de stocker les données en eux. Donc, je dois dupliquer la structure de classe que j'ai déjà sur le serveur 2. Je vais devoir le maintenir. – kaivalya

Répondre

0

Je crois que la meilleure façon de le faire est de stocker les données sur le côté client. Il réduit les postbacks inutiles et améliore la réactivité de votre application. Si vous voulez vraiment le stocker sur le serveur, vous pouvez utiliser SessionState.

Si vous voulez vraiment le stocker dans quelque chose comme ViewState, vous pouvez utiliser une solution comme celle-ci: ASP.NET MVC - Is there a way to simulate a ViewState?. Cependant, je le déconseille car cela compliquera les choses. Le faire côté client est probablement le moyen le plus élégant et le stocker dans SessionState est le plus simple.

Rappelez-vous que vous pouvez toujours échapper au modèle MVC et utiliser un simple formulaire Web pour cette page spécifique (qui vous donnera VIEWSTATE où vous en avez besoin): ASP.NET MVC controller actions design

+0

S'il vous plaît voir mes commentaires ci-dessus. Je ne comprends pas pourquoi ce serait le meilleur moyen. Les petites publications sur un module d'entrée de données ne créent pas beaucoup de retard notable de la part de l'utilisateur, mais ajoutent une couche de maintenance élevée à l'application. – kaivalya

0

magasin liste des produits au modèle de la vue et chaque fois que vous modifiez une valeur, vous pouvez faire un post Ajax au contrôleur et enregistrer les modifications à la base de données, utiliser des vues partielles pour afficher chaque élément dans votre liste de produits

0

vous pouvez essayer d'intégrer http://www.castleproject.org/ActiveRecord/ pour faciliter l'enregistrement et la mise à jour . De cette façon, vous pouvez simplement mapper votre modèle sur votre base de données en utilisant ORM (Object Relational Mapping). Cela prend un peu plus de travail au début mais vous finirez avec des commandes simples comme product.Update() et product.Create()

Questions connexes