ASP.NET MVC控制器命名多元化

Pet*_*ron 78 asp.net-mvc naming-conventions pluralize asp.net-mvc-controller

RESTful约定表明在单个对象上使用复数名词.

什么是命名ASP.NET MVC控制器的复数约定,即
ProductControllerProductsController

Lou*_*ouD 138

我将不得不不同意先前使用复数或单数并保持一致的答案.每个控制器应根据它们是与单个实体还是多个实体进行交互来使用不同的约定.特别是因为URL中默认使用控制器名称.

虽然项目模板使用单数(HomeController,AccountController),但只有一个主页,而帐户操作仅在会话的单个帐户上运行.我不希望/ homes的URL访问主页,我也不希望转到/ accounts来管理我的帐户设置.

多个HomesController 用于房地产网站,该网站具有与列出和搜索多个房屋相关的方法:/ homes/new-listing.

  • 100000%同意. (5认同)
  • 很好的答案,[在这里扩展](http://stackoverflow.com/a/21227932/11635) (3认同)
  • 同意 - 例如,如果你设计你的路由,如`/ api/users`(所有用户)和`/ api/users/{userId}`(单用户),`UsersController`是有意义的 (3认同)
  • 难道`/api/user/{userId}` 没有同样意义,你可以争辩说,即使在处理多个用户的情况下,你的控制器反映了实体类型,因此`HomeController` 将处理实体类型为`Home`,因此`/Home/{homeId}`和`/Home/All-Homes/` (2认同)

Cyb*_*axs 40

一些MVC框架使用复数,但MVC项目模板包含一个名为AccountController的控制器,因此建议使用单元命名.

没关系.与Asp.net MVC框架中的大多数内容一样,选择权在您手中.没有真正的惯例.

这是我个人的意见,但重要的是你选择一个方案并保持一致!

  • 我想说的是,实际上,这是正确的答案:/sf/answers/2237827231/(它有更多的选票,但没有被标记为“答案”。AccountController 用于当前用户;使用复数会很奇怪,除非它用于在管理仪表板中管理多个用户;但这是一个不同的用例,应该(恕我直言)是不同的控制器。而且 HomeController 也只有一个 Home。所以...不,一致性应该是关于理解控制器的作用并基于此给它一个适当的名称。 (5认同)
  • 竖起大拇指强调一致性. (3认同)

Rit*_*ieD 12

当您使用MVC脚手架为实体框架实体添加控制器时,VS2013使控制器名称复数,因此我建议使用该默认值,使实体控制器复数.

更新:我改变了主意.LouD是对的.这取决于控制器的上下文.