Плюрализация именования контроллеров ASP.NET MVC

Соглашения RESTful указывают на использование существительных во множественном числе вместо объектов единственного числа.

Каково соглашение о множественном числе для именования контроллеров ASP.NET MVC, то есть
ProductController или ProductsController?


person Petrus Theron    schedule 17.09.2012    source источник
comment
Я не думаю, что они должны иметь множественное число, если судить по стандартным, поставляемым с учебными пособиями по MVC на ASP.net.   -  person user1477388    schedule 17.09.2012
comment
Например, веб-API ASP.NET по умолчанию имеет сочетание имен в единственном (HomeController, AccountController) и множественном числе (ValuesController).   -  person Sergio Vicente    schedule 20.05.2016


Ответы (3)


Некоторые платформы MVC используют множественное число, однако шаблоны проектов MVC содержат контроллер с именем AccountController, что предполагает единственное именование.

Это не имеет значения. Как и в большинстве случаев в среде Asp.net MVC, выбор за вами. Нет настоящих условностей.

Это мое личное мнение, но важно то, что вы выбираете схему и будьте последовательны!

person Cybermaxs    schedule 17.09.2012
comment
Большой палец вверх, чтобы подчеркнуть последовательность. - person pim; 17.01.2018
comment
Я бы сказал, что на самом деле это правильный ответ: stackoverflow.com/a/31968960/2013803 (там больше голосов, но не был отмечен как ответ). AccountController предназначен для учетной записи текущего пользователя; использование множественного числа было бы очень странным, если только оно не предназначено для управления несколькими пользователями на панели администратора; но это другой вариант использования и должен (IMHO) быть другим контроллером. И для HomeController также есть только один Home. Итак ... нет, последовательность должна заключаться в понимании того, что делает контроллер, и присвоении ему соответствующего имени на основе этого. - person Jashan; 27.07.2018

Мне придется не согласиться с предыдущими ответами об использовании множественного или единственного числа и согласованности. Каждый контроллер должен использовать разные соглашения в зависимости от того, взаимодействуют ли они с одним или несколькими объектами. Тем более, что имя контроллера по умолчанию используется в URL-адресе.

В то время как шаблоны проектов используют единственное число (HomeController, AccountController), существует только один Home, и действия Account работают только с одной учетной записью для сеанса. Я бы не ожидал, что URL-адреса / homes будут иметь доступ к домашней странице, и я не ожидал бы перехода в / accounts для управления настройками моей учетной записи.

Множественное число HomesController будет работать для веб-сайта недвижимости, на котором есть методы, связанные с перечислением и поиском нескольких домов: / homes / new-listings.

person LouD    schedule 12.08.2015
comment
Согласовано - например, UsersController имеет смысл, если вы разрабатываете свои маршруты как /api/users (все пользователи) и /api/users/{userId} (один пользователь). - person Levi Fuller; 02.03.2018
comment
Хотя /api/user/{userId} не имеет такого же смысла, вы можете утверждать, что даже в случае работы с несколькими пользователями ваш контроллер отражает тип объекта, поэтому HomeController будет иметь дело с объектами типа Home, следовательно, /Home/{homeId} и /Home/All-Homes/ - person NibblyPig; 05.06.2019
comment
Я согласен с этим объяснением. - person Hailee; 23.09.2020

Когда вы добавляете контроллер с использованием шаблонов MVC для сущности Entity Framework, VS2013 делает имя контроллера множественным, поэтому я бы предложил использовать это значение по умолчанию, которое делает контроллеры для сущностей множественным.

ОБНОВЛЕНИЕ: я передумал. LouD правильный. Это зависит от контекста контроллера.

person RitchieD    schedule 23.04.2014