Pluralisation de noms de contrôleurs ASP.NET MVC

86

Les conventions RESTful indiquent l'utilisation de noms pluriels sur des objets singuliers.

Quelle est la convention de pluralisation pour nommer les contrôleurs ASP.NET MVC, c'est
ProductController-à- dire ou ProductsController?

Petrus Theron
la source
4
Je ne pense pas qu'ils soient censés être pluralisés à en juger par ceux par défaut fournis avec les didacticiels MVC sur ASP.net.
user1477388
1
L'API Web ASP.NET par défaut a par exemple un mélange de noms au singulier (HomeController, AccountController) et au pluriel (ValuesController).
Sergio Vicente

Réponses:

45

Certains cadres MVC utilisent des pluriels, mais les modèles de projet MVC contiennent un contrôleur appelé AccountController, suggérant ainsi une dénomination singulière.

Cela n'a pas d'importance. Comme pour la plupart des éléments du framework Asp.net MVC, le choix vous appartient. Il n'y a pas de vraies conventions.

C'est mon opinion personnelle mais ce qui compte, c'est que vous choisissiez un schéma et soyez cohérent!

Cybermaxs
la source
3
Bravo pour l'accent mis sur la cohérence.
pim le
3
Je dirais qu'en fait, c'est la bonne réponse: stackoverflow.com/a/31968960/2013803 (il a plus de votes mais n'a pas été marqué comme "la réponse). Le AccountController est pour le compte de l'utilisateur actuel; en utilisant Le pluriel serait très étrange à moins qu'il ne soit là pour gérer plusieurs utilisateurs dans un tableau de bord d'administration; mais c'est un cas d'utilisation différent et devrait (à mon humble avis) être un contrôleur différent. Et il n'y a aussi qu'un seul Home pour le HomeController. Donc ... non , la cohérence devrait consister à comprendre ce que fait un contrôleur et à lui donner un nom approprié en fonction de cela.
Jashan
162

Je vais devoir être en désaccord avec les réponses précédentes concernant l'utilisation du pluriel ou du singulier et la cohérence. Chaque contrôleur doit utiliser une convention différente selon qu'il interagit avec une ou plusieurs entités. D'autant que le nom du contrôleur est utilisé par défaut dans l'URL.

Alors que les modèles de projet utilisent le singulier (HomeController, AccountController), il n'y a qu'un seul Home et les actions de compte ne fonctionnent que sur le seul compte pour la session. Je ne m'attendrais pas à ce que les URL de / homes accèdent à la page d'accueil, ni à accéder à / accounts pour gérer les paramètres de mon compte.

Le pluriel HomesController serait travailler pour un site Web immobilier qui avait des méthodes liées à l' inscription et la recherche: plusieurs maisons / maisons / nouvelles inscriptions.

Bruyant
la source
3
D'accord - Par exemple, a UsersControllerest logique si vous concevez vos itinéraires comme /api/users(tous les utilisateurs) et /api/users/{userId}(utilisateur unique)
Levi Fuller
2
Cela /api/user/{userId}n'aurait pas autant de sens cependant, vous pourriez faire valoir que même dans le cas de plusieurs utilisateurs, que votre contrôleur reflète le type d'entité, donc HomeControllertraiterait des entités de type Home, par conséquent /Home/{homeId}et/Home/All-Homes/
NibblyPig
Je suis d'accord avec cette explication.
Hailee le
13

Lorsque vous ajoutez un contrôleur à l'aide de l'échafaudage MVC pour une entité Entity Framework, VS2013 rend le nom du contrôleur au pluriel, je suggère donc d'utiliser cette valeur par défaut qui rend les contrôleurs pour les entités au pluriel.

MISE À JOUR: j'ai changé d'avis. LouD a raison. Cela dépend du contexte du contrôleur.

RitchieD
la source