Pluralizzazione dei nomi dei controller ASP.NET MVC


86

Le convenzioni RESTful indicano l'uso di sostantivi plurali su oggetti singolari.

Qual è la convenzione di pluralizzazione per la denominazione dei controller ASP.NET MVC, ovvero
ProductControllero ProductsController?


4
Non penso che dovrebbero essere pluralizzati a giudicare da quelli predefiniti forniti con i tutorial MVC su ASP.net.
user1477388

1
L'API Web ASP.NET predefinita, ad esempio, ha una combinazione di nomi singolari (HomeController, AccountController) e plurali (ValuesController).
Sergio Vicente

Risposte:


45

Alcuni framework MVC utilizzano plurali, tuttavia i modelli di progetto MVC contengono un controller chiamato AccountController che suggerisce così la denominazione singolare.

Non importa. Come con la maggior parte delle cose nel framework Asp.net MVC, la scelta è tua. Non ci sono vere convenzioni.

È la mia opinione personale, ma ciò che conta è che tu scelga uno schema ed essere coerente!


3
Complimenti per l'enfasi sulla coerenza.
pim

3
Direi che in realtà questa è la risposta corretta: stackoverflow.com/a/31968960/2013803 (ha più voti ma non è stato contrassegnato come "la risposta). AccountController è per l'account dell'utente corrente; utilizzando plurale sarebbe molto strano a meno che non sia lì per la gestione di più utenti in una dashboard di amministrazione; ma questo è un caso d'uso diverso e dovrebbe (IMHO) essere un controller diverso. E c'è anche una sola Home per HomeController. Quindi ... no , la consistenza dovrebbe essere tutto di capire cosa fa un controller e dandogli un nome appropriato in base a questo.
Jashan

162

Dovrò non essere d'accordo con le risposte precedenti sull'uso del plurale o del singolare e sull'essere coerenti. Ogni controller dovrebbe utilizzare una convenzione diversa in base al fatto che interagiscano con entità singole o multiple. Soprattutto perché il nome del controller viene utilizzato per impostazione predefinita nell'URL.

Sebbene i modelli di progetto utilizzino singolare (HomeController, AccountController), esiste solo una Home e le azioni Account operano solo sul singolo account per la sessione. Non mi aspetto che gli URL di / homes accedano alla home page, né mi aspetto di andare su / accounts per gestire le impostazioni del mio account.

Il HomesController plurale sarebbe lavorare per un sito web immobiliare che aveva metodi relativi alla quotazione e alla ricerca più case: case / / new-in lista.


3
Concordato - Ad esempio, a UsersControllerha senso se progetti i tuoi percorsi come /api/users(tutti gli utenti) e /api/users/{userId}(utente singolo)
Levi Fuller

2
Non sarebbe /api/user/{userId}fare altrettanto molto senso, però, si potrebbe sostenere che, anche nel caso di trattare con più utenti, che il controller riflette il tipo di entità, in tal modo HomeControllersi occuperebbe di entità di tipo Home, quindi /Home/{homeId}e/Home/All-Homes/
NibblyPig

Sono d'accordo con questa spiegazione.
Hailee il

13

Quando si aggiunge un controller utilizzando lo scaffolding MVC per un'entità Entity Framework, VS2013 rende il nome del controller plurale, quindi suggerirei di utilizzare quel valore predefinito che rende i controller per le entità plurali.

AGGIORNAMENTO: ho cambiato idea. LouD è corretto. Dipende dal contesto del controller.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.