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

86

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

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

Петрус Терон
источник
4
Я не думаю, что они должны иметь множественное число, если судить по стандартным, поставляемым с учебными пособиями по MVC на ASP.net.
user1477388
1
Например, веб-API ASP.NET по умолчанию имеет сочетание имен в единственном (HomeController, AccountController) и множественном числе (ValuesController).
Серхио Висенте,

Ответы:

45

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

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

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

Cybermaxs
источник
3
Поднимите палец вверх, чтобы подчеркнуть последовательность.
pim
3
Я бы сказал, что на самом деле это правильный ответ: stackoverflow.com/a/31968960/2013803 (у него больше голосов, но он не был отмечен как «ответ»). AccountController предназначен для учетной записи текущего пользователя; множественное число было бы очень странным, если оно не предназначено для управления несколькими пользователями на панели администратора; но это другой вариант использования и должен (IMHO) быть другим контроллером. И также есть только один Home для HomeController. Итак ... нет , последовательность должна заключаться в понимании того, что делает контроллер, и присвоении ему подходящего имени на основе этого »
Джашан
162

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

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

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

Громкий
источник
3
Согласовано - например, UsersControllerимеет смысл, если вы разрабатываете свои маршруты как /api/users(все пользователи) и /api/users/{userId}(один пользователь)
Леви Фуллер
2
Не был /api/user/{userId}сделать столько же смысл , хотя, можно утверждать , что даже в случае работы с несколькими пользователями, что ваш контроллер отражает тип объекта, таким образом , HomeControllerбудет иметь дело с сущностями типа Home, следовательно , /Home/{homeId}и/Home/All-Homes/
NibblyPig
Я согласен с этим объяснением.
Хейли,
13

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

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

RitchieD
источник