ASP.NET MVC Controller-Namenspluralisierung

85

RESTful-Konventionen weisen darauf hin, dass mehrere Substantive über einzelnen Objekten verwendet werden.

Was ist die Pluralisierungskonvention zum Benennen von ASP.NET MVC-Controllern, dh
ProductControlleroder ProductsController?

Petrus Theron
quelle
4
Ich denke nicht, dass sie nach den Standard-Pluralisierungen, die mit den MVC-Tutorials auf ASP.net geliefert werden, pluralisiert werden sollten.
user1477388
1
Die Standard-ASP.NET-Web-API enthält beispielsweise eine Mischung aus Singular- (HomeController, AccountController) und Pluralnamen (ValuesController).
Sergio Vicente

Antworten:

44

Einige MVC-Frameworks verwenden Pluralformen. Die MVC-Projektvorlagen enthalten jedoch einen Controller namens AccountController, der eine einzelne Benennung vorschlägt.

Es spielt keine Rolle. Wie bei den meisten Dingen im Asp.net MVC-Framework liegt die Wahl bei Ihnen. Es gibt keine wirklichen Konventionen.

Es ist meine persönliche Meinung, aber was zählt, ist, dass Sie ein Schema auswählen und konsequent sind!

Cybermaxs
quelle
3
Daumen hoch für die Betonung der Konsistenz.
Pimbrouwers
2
Ich würde sagen, dass dies tatsächlich die richtige Antwort ist: stackoverflow.com/a/31968960/2013803 (es hat mehr Stimmen, wurde aber nicht als "die Antwort" markiert). Der AccountController ist für das Konto des aktuellen Benutzers; using Plural wäre sehr seltsam, wenn es nicht für die Verwaltung mehrerer Benutzer in einem Admin-Dashboard vorhanden wäre, aber das ist ein anderer Anwendungsfall und sollte (IMHO) ein anderer Controller sein. Und es gibt auch nur ein Home für den HomeController. Also ... nein Bei der Konsistenz sollte es darum gehen, zu verstehen, was ein Controller tut, und ihm darauf basierend einen geeigneten Namen zu geben.
Jashan
158

Ich werde mit den vorherigen Antworten nicht einverstanden sein müssen, entweder Plural oder Singular zu verwenden und konsistent zu sein. Jeder Controller sollte eine andere Konvention verwenden, je nachdem, ob er mit einer oder mehreren Entitäten interagiert. Zumal der Controller-Name standardmäßig in der URL verwendet wird.

Während die Projektvorlagen Singular verwenden (HomeController, AccountController), gibt es nur ein Home und die Kontoaktionen werden nur für das einzelne Konto der Sitzung ausgeführt. Ich würde weder erwarten, dass die URLs von / home auf die Homepage zugreifen, noch würde ich erwarten, dass ich zu / accounts gehe, um meine Kontoeinstellungen zu verwalten.

Der Plural HomesController würde für eine Immobilienwebsite funktionieren, die Methoden zum Auflisten und Durchsuchen mehrerer Häuser enthält: / Homes / New-Listings.

Laut
quelle
3
Einverstanden - Zum Beispiel ist a UsersControllersinnvoll, wenn Sie Ihre Routen wie /api/users(alle Benutzer) und /api/users/{userId}(Einzelbenutzer) gestalten
Levi Fuller
2
Wäre jedoch nicht /api/user/{userId}genauso sinnvoll, könnten Sie argumentieren, dass Ihr Controller selbst im Fall des Umgangs mit mehreren Benutzern den Entitätstyp widerspiegelt und somit HomeControllerEntitäten des Typs behandelt Home, daher /Home/{homeId}und/Home/All-Homes/
NibblyPig
12

Wenn Sie einen Controller mithilfe des MVC-Gerüsts für eine Entity Framework-Entität hinzufügen, wird der Controller-Name in VS2013 pluralisiert. Daher würde ich vorschlagen, diesen Standard zu verwenden, der Controller für Entitäten pluralisiert.

UPDATE: Ich habe es mir anders überlegt. LouD ist richtig. Dies hängt vom Kontext des Controllers ab.

RitchieD
quelle