Pluralização de nomenclatura de controlador ASP.NET MVC

86

As convenções RESTful indicam o uso de substantivos no plural em vez de objetos no singular.

Qual é a convenção de pluralização para nomear controladores ASP.NET MVC,
ProductControllerou seja, ou ProductsController?

Petrus Theron
fonte
4
Eu não acho que eles devam ser pluralizados a julgar pelos padrões que vêm com os tutoriais MVC no ASP.net.
user1477388
1
A API da Web ASP.NET padrão, por exemplo, tem uma mistura de nomes singulares (HomeController, AccountController) e nomes plurais (ValuesController).
Sergio Vicente

Respostas:

45

Alguns MVC Frameworks usam plurais, no entanto, os modelos de projeto MVC contêm um controlador chamado AccountController, sugerindo assim uma nomenclatura simples.

Não importa. Como a maioria das coisas na estrutura MVC do Asp.net, a escolha é sua. Não há convenções reais.

É minha opinião pessoal, mas o que importa é que você escolha um esquema e seja consistente!

Cybermaxs
fonte
3
Polegar para cima para ênfase na consistência.
pim
3
Eu diria que, na verdade, esta é a resposta correta: stackoverflow.com/a/31968960/2013803 (tem mais votos, mas não foi marcado como "a resposta). O AccountController é para a conta do usuário atual; usando plural seria muito estranho, a menos que fosse para gerenciar vários usuários em um painel de administração; mas esse é um caso de uso diferente e (IMHO) deveria ser um controlador diferente. E também há apenas um Home para o HomeController. Então ... não , a consistência deve ser entender o que um controlador faz e dar a ele um nome apropriado com base nisso.
Jashan
162

Vou ter que discordar das respostas anteriores de usar plural ou singular e ser consistente. Cada controlador deve usar uma convenção diferente com base em se eles interagem com entidades únicas ou múltiplas. Especialmente porque o nome do controlador é usado por padrão na URL.

Enquanto os modelos de projeto usam singular (HomeController, AccountController), há apenas um Home e as ações de Conta operam apenas em uma única conta para a sessão. Não espero que os URLs de / homes acessem a página inicial, nem espero acessar / accounts para gerenciar as configurações da minha conta.

O HomesController plural iria trabalhar para um site imobiliário que tinha métodos relacionados à listagem e busca várias casas: / casas / New-listas.

Alto
fonte
3
Concordado - Por exemplo, UsersControllerfaz sentido se você projetar suas rotas como /api/users(todos os usuários) e /api/users/{userId}(único usuário)
Levi Fuller
2
Não /api/user/{userId}faria tanto sentido, porém, você poderia argumentar que mesmo no caso de lidar com vários usuários, seu controlador reflete o tipo de entidade, portanto HomeController, lidaria com entidades do tipo Home, portanto /Home/{homeId}e/Home/All-Homes/
NibblyPig
Eu concordo com esta explicação.
Hailee
13

Quando você adiciona um controlador usando o scaffolding MVC para uma entidade Entity Framework, VS2013 torna o nome do controlador plural, então eu sugeriria usar esse padrão que torna os controladores para entidades plurais.

ATUALIZAÇÃO: mudei de ideia. LouD está correto. Depende do contexto do controlador.

RitchieD
fonte