ASP.NETMVCコントローラーの名前付けの複数化


86

RESTful規則は、単一のオブジェクトに対して複数の名詞を使用することを示しています。

すなわち、ASP.NET MVCコントローラに名前を付けるための複数形の規則は何である
ProductControllerかはProductsController


4
ASP.netのMVCチュートリアルに付属しているデフォルトのものから判断すると、それらが複数化されることは想定されていないと思います。
user1477388 2012

1
たとえば、デフォルトのASP.NET Web APIには、単数形(HomeController、AccountController)と複数形(ValuesController)の両方が混在しています。
セルジオビセンテ

回答:


45

一部のMVCフレームワークは複数形を使用しますが、MVCプロジェクトテンプレートにはAccountControllerというコントローラーが含まれているため、単数形の命名が提案されます。

それは問題ではありません。Asp.net MVCフレームワークのほとんどのものと同様に、選択はあなた次第です。実際の慣習はありません。

私の個人的な意見ですが、重要なのは、スキームを選択して一貫性を保つことです。


3
一貫性を強調するために親指を立てます。
PIM

3
実際には、これが正解だと思います:stackoverflow.com/a/31968960/2013803(投票数は多いですが、「回答」としてマークされていません)。AccountControllerは、現在のユーザーのアカウント用です。管理ダッシュボードで複数のユーザーを管理するために存在しない限り、複数形は非常に奇妙ですが、それは別のユースケースであり、(IMHO)は別のコントローラーである必要があります。また、HomeControllerのホームも1つだけです。 、一貫性は、すべてのコントローラが何を理解し、それをそれに基づいて適切な名前を与えることについてである必要があります。
Jashan

162

複数形または単数形を使用し、一貫性を保つという以前の回答に反対する必要があります。各コントローラーは、単一のエンティティと複数のエンティティのどちらと対話するかに基づいて、異なる規則を使用する必要があります。特に、コントローラー名はデフォルトでURLで使用されるためです。

プロジェクトテンプレートは単数(HomeController、AccountController)を使用しますが、ホームは1つだけであり、アカウントアクションはセッションの単一のアカウントでのみ機能します。/ homesのURLがホームページにアクセスすることも、/ accountsにアクセスしてアカウント設定を管理することも期待していません。

複数のHomesController、複数の家の一覧表示と検索に関連するメソッドを持つ不動産Webサイト/ homes / new-listingsで機能します。


3
同意しました-たとえば、(すべてのユーザー)や(シングルユーザー)のUsersControllerようにルートを設計する場合は意味があります/api/users/api/users/{userId}
Levi Fuller

2
/api/user/{userId}ただし、それほど意味はありませんが、複数のユーザーを処理する場合でも、コントローラーはエンティティタイプを反映しているため、HomeControllerタイプのエンティティを処理するHomeため/Home/{homeId}/Home/All-Homes/
NibblyPig

私はこの説明に同意します。
Hailee

13

Entity FrameworkエンティティのMVCスキャフォールディングを使用してコントローラーを追加すると、VS2013はコントローラー名を複数形にするため、エンティティーのコントローラーを複数形にするデフォルトを使用することをお勧めします。

更新:気が変わった。LouDは正しいです。これは、コントローラーのコンテキストによって異なります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.