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


86

RESTful约定表示在单数对象上使用复数名词。

命名ASP.NET MVC控制器(即
ProductControlleror )的复数约定是什么ProductsController


4
我不认为从ASP.net上MVC教程随附的默认值来看,它们应该是多元的。
user1477388 2012年

1
例如,默认的ASP.NET Web API混合使用单数(HomeController,AccountController)和复数名称(ValuesController)。
塞尔吉奥·维森特

Answers:


45

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

没关系 与Asp.net MVC框架中的大多数内容一样,选择就是您自己。没有真正的约定。

这是我个人的看法,但重要的是您选择一个方案并保持一致!


3
竖起大拇指强调一致性。
pimbrouwers

3
我会说,实际上,这是正确的答案:stackoverflow.com/a/31968960/2013803(它具有更多投票,但未标记为“答案”。AccountController用于当前用户的帐户;使用除非在管理仪表板中可以用来管理多个用户,否则复数将很奇怪;但是那是一个不同的用例,应该(IMHO)是一个不同的控制器。而且HomeController也只有一个Home。 ,一致性应该全是了解控制器的功能并
据此为其命名。– Jashan

161

我将不得不不同意使用复数或单数且保持一致的先前答案。每个控制器应基于与单个或多个实体进行交互而使用不同的约定。特别是因为默认情况下URL中使用了控制器名称。

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

复数HomesController工作的房地产网站,有相关的上市和搜索多个家庭的方法:/家庭/新上市。


3
同意-例如,UsersController如果你设计的路线就像是有道理的/api/users(所有用户)和/api/users/{userId}(单用户)
列维富勒

2
会不会/api/user/{userId}让同样多的感觉,虽然,你可能会说,即使在处理多用户的情况下,你的控制反映了实体类型,从而HomeController将处理类型的实体Home,因此,/Home/{homeId}/Home/All-Homes/
NibblyPig

我同意这个解释。
Hailee

13

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

更新:我改变了主意。大声是正确的。这取决于控制器的上下文。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.