2 votes

Comment organiser les vues et les contrôleurs de manière hiérarchique lorsque l'on a un modèle avec de nombreux enfants

Disons que j'ai un site web qui répertorie des Personnes, et chaque Personne a plusieurs propriétés, certaines un-à-un (nom, adresse), d'autres un-à-plusieurs (couleurs préférées, comptes bancaires etc).

Dans ma couche métier, c'est bien organisé hiérarchiquement.

Comment dois-je organiser cela dans mes contrôleurs et vues? Devrais-je avoir un PersonsController, FavoriteColorsController etc? tous résidant dans le même espace de noms et dossier? Ou devrais-je avoir seulement un PersonsController avec de nombreuses actions, telles que IndexFavouriteColors, UpdateFavoriteColor etc. Aucune des options n'est vraiment satisfaisante. La première ne montre pas que FavoriteColors est un enfant de Person et ne peut être utilisé que dans le contexte d'une personne. La deuxième créera un énorme PersonController.

La même chose pour les vues bien sûr. Le mieux serait d'avoir

  • Vues/Persons/index.aspx
  • Vues/Persons/details.aspx
  • Vues/Persons/ etc.
  • Vues/Persons/FavoriteColors/index.aspx
  • Vues/Persons/FavoriteColors/details.aspx

Dans cet exemple, je n'ai donné que quelques propriétés un-à-plusieurs à la Personne, mais en réalité il y en a beaucoup (10+), ce qui augmente le besoin de clarté.

Merci.

4voto

Gidon Points 8758

En fait, j'ai trouvé la réponse dans les "Areas", qui est supposément supporté par Rails, mais pas par MVC, bien qu'il existe des implémentations privées :

Regroupement des contrôleurs avec ASP.NET MVC
Création des "Areas" MVC en tant que sous-dossiers sous les vues

0voto

omoto Points 708
PersonsController.cs

public ActionResult Index()
{
  return View();
}
public ActionResult Details()
{
  return View();
}
public ActionResult Info()
{
  return View();
}

....

Faites un clic droit sur chaque méthode et générez des vues

Dans le dossier Views, en conséquence, vous devriez avoir

Views
----- Persons
-------------Index
-------------Details
-------------Info
-------------....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X