Je suis relativement nouveau à MVC, donc c'est probablement une question novice. J'essaie de comprendre les meilleures pratiques sur la façon de maintenir une séparation claire des préoccupations dans quelques scénarios qui ne semblent pas aller droit au but.Modèles spécifiques à la vue dans ASP.NET MVC?
Je regarde actuellement deux scénarios. Imaginez une application très basique qui permet aux utilisateurs de visualiser et de modifier les profils en ligne pour les avocats. Il existe une action/vue pour afficher le profil d'un utilisateur particulier et une action/vue pour modifier le profil d'un utilisateur particulier. Il est facile d'imaginer une classe Model sympa et propre pour représenter les détails du profil d'un utilisateur, peut-être réalisé avec Entity Framework et mappé à la table SQL du profil utilisateur.
Dans l'action vue/vue pour afficher le profil d'un utilisateur, fonctionnellement, j'ai besoin d'un bouton ou un lien qui permet à un utilisateur de modifier le profil. Mais cela ne devrait être disponible que pour un sous-ensemble d'utilisateurs. Par exemple, l'utilisateur peut modifier son propre profil. En outre, les super-utilisateurs peuvent modifier le profil de n'importe qui. Ma question est de savoir comment la vue devrait décider si le lien devrait être là lors du rendu d'un profil particulier. Je suppose qu'il est incorrect pour la vue de contenir la logique pour déterminer si l'utilisateur actuel peut modifier le profil en cours. Dois-je ajouter une propriété IsEditable à la classe de modèle UserProfile? Cela ne me semble pas tragique, mais cela ne me semble pas non plus tout à fait correct. Dois-je créer une nouvelle classe Modèle qui agrège le profil utilisateur avec des informations supplémentaires sur la sécurité? Un autre scénario ... Lors de l'édition d'un profil particulier, l'un des éléments modifiables est la liste des spécialités pour un avocat particulier. La liste des spécialités possibles n'est pas fixe. Si la vue veut les afficher dans une liste déroulante, il faut la liste de toutes les spécialités possibles de la base de données. La vue ne devrait pas les obtenir directement à partir de la base de données, alors est-ce que je refais l'objet Model et fournissais à la vue à la fois le profil UserProfile et une liste de spécialités valides? Je suppose que le problème générique que j'essaie de comprendre est que je devrais être à l'aise avec la création de nombreuses petites classes de modèles qui sont essentiellement spécifiques aux vues individuelles. Chaque classe inclut les différentes parties non liées du modèle de domaine plus grand nécessaire pour cette vue particulière.