Дизайн контроллера MVC - PullRequest
2 голосов
/ 21 июня 2011

Я работаю над проектом MVC, и на стороне администратора я должен создать CRUD-формы для Products, Category, SubCategory.

Какой из этих подходов будет лучше:

  1. Создать один AdminController и иметь методы действий CRUD для продуктов, категорий, подкатегорий.
  2. Создать отдельные контроллеры для продуктов, категорий, подкатегорий, которые имеют отдельные методы действий CRUD?

Спасибо за помощь

Ответы [ 4 ]

3 голосов
/ 21 июня 2011

Как уже говорили другие, лучше иметь отдельные контроллеры. Я бы также рекомендовал разместить их в административной области, чтобы у вас была функциональность, "отделенная" от основного сайта.

0 голосов
/ 21 июня 2011

Обычно полезно следовать принципам REST .

Идея довольно проста - каждый «ресурс» должен отображаться на контроллер (подход # 2).

Тем не менее, я думаю, что лучше «разрезать вдоль естественных соединений».
Имея это в виду, иногда разложение (деление на большее количество контроллеров) просто ради этого приводит к ненужной сложности.Контроллеры должны отображаться в соответствии с Вашими вариантами использования.

Начинайте с одного (который кажется наиболее важным) и переходите к следующему, когда текущий превышает ~ 100 loc.

0 голосов
/ 21 июня 2011

Я бы предпочел иметь все функциональные возможности продуктов в контроллере продуктов и т. Д. В основном из-за принципа единой ответственности

в MVC3. Вы можете автоматически создавать контроллеры с методами / экранами CRUD, еслиВы используете мастер добавления контроллера.

пример: http://msdn.microsoft.com/en-us/data/gg685467

В этом случае контроллер должен быть лишь тонким слоем, говорящим со слоем бизнес-сервисов, который обрабатывает всю бизнес-логику.Например, продукты, которые вы могли бы создать ProductService, который будет обрабатывать вашу бизнес-логику.

0 голосов
/ 21 июня 2011

Всегда лучше, чтобы ваши контроллеры были максимально легкими, поэтому я бы выбрал отдельные контроллеры для каждого.Возможно, вы захотите взглянуть на функцию MVC Controller Scaffolding , которая теперь более доступна в обновлении инструментов MVC 3.Он идеально подходит для такого рода «базовой» работы CRUD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...