2008-12-30 6 views
0

Dois-je utiliser le même contrôleur et afficher pour éditer et créer des modèles dans ASP.NET MVC, ou dois-je créer une vue et une action de contrôleur pour créer et une action de vue et de contrôleur pour l'édition?Dois-je utiliser le même contrôleur et afficher pour modifier et créer des modèles dans ASP.NET MVC?

La vue de l'édition est certainement susceptible d'être différent - il n'a pas fait toujours sens pour l'interface utilisateur pour l'édition d'un objet soit identique à la vue de la création,

En séparant les vues que je vais éviter beaucoup de "if statements" pour déterminer si je suis en train d'éditer ou de créer ...

Pensées?

Répondre

2

Les recommandations que j'ai vues suggèrent que les vues sont séparées avec les éléments communs contenus dans un contrôle pour rester DRY.

Il semble logique d'adopter la même approche avec le contrôleur - réutiliser les parties communes le cas échéant.

Cette vue est reflétée ici How to cleanly reuse edit/new views in Asp.NET MVC car la question est très similaire.

0

AFAIK cela est recommandé: (personne utilisée dans l'exemple)

utiliser un contrôleur pour gérer les deux cas

Dans ce contrôleur, ont quatre actions:

  • Nouveau()
  • Edit (int personId)
  • Créer (Personne p)
  • Mise à jour (Personne p)

Deux vues, Personne/New.aspx et par personne/Edit.aspx

les deux vues contiennent chacun la forme que les postes à leurs actions respectives:

  • Nouveau -> Créer
  • Édition -> Mise à jour

Maintenant vous avez deux choix, implémentez le contenu du formulaire deux fois (dans chacune des vues) ou implémentez le réel pour m dans un PersonForm.ascx et utilisez un rendu partiel pour rendre le contenu du formulaire.

La façon dont vous choisissez d'aller sur le dernier dépend ici si les formes doivent être plus ou moins les mêmes (aller pour un contrôle commun) ou si elles doivent être différentes (implémenter deux différentes)

Si c'est juste une question de mise en page différente dans les nouveaux formulaires/éditer, vous voudrez peut-être simplement se référer à différents fichiers CSS et laisser css gérer les différences

Questions connexes