2009-03-31 3 views
2

Должен ли быть отдельный контроллер для каждой таблицы, который нужно манипулировать в системе?ASP.NET MVC - количество контроллеров

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

/DataTypeA/List --list for A 
/DataTypeA/Create -- create new data 
. 
. 
. 
/DataTypeB/List --list for B 

или должны там быть просто отдельные действия в пределах Административный контроллер следующим образом:

/Admin/DataTypeA -- this lists DataTypeA 
/Admin/DatatypeB -- this lists DataTypeB 
/Admin/DataTypeA_Create -- Create a new DataTypeA 
/Admin/DataTypeB_Create -- Create a new DataTypeB 

ответ

3

Мой подход заключается в создании нового контроллера для основных участников (таблиц) в системе. Вспомогательные таблицы в конечном итоге начинают обновляться контроллером для первичной таблицы, с которой связаны вспомогательные данные. Например, у меня должен быть пользовательский контроллер и есть действие, чтобы обновлять информацию UserContact, связанную с конкретным пользователем в контроллере пользователя, а не создавать отдельный контроллер UserContact.

0

В основном это зависит от того, что вам нужно и как вы хотите организовать свой код. Если DataTypeA явно отличается от DataTypeB (т. Е. Животные против автомобилей), то вы, вероятно, захотите использовать разные контроллеры. Но если DataTypeA является подмножеством (или аналогичным) DataTypeB, то я бы использовал один контроллер с разными действиями.

ASP.NET MVC настолько гибок, что это очень круто, хотя, по общему признанию, в начале гибкость кажется похожей на тонущую. Просто начните писать код, и вы поймете, если вы движетесь по неправильному пути. Для MVC существует кривая обучения. Смирись с этим.

0

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

Я начал собирать небольшую прототипную систему блога, чтобы попробовать ASP.NET MVC некоторое время назад (по-прежнему WIP, к сожалению), и одно дизайнерское решение, которое я закончил, заключалось в том, чтобы включить контроллер комментария в сообщение контроллер. Однако я решил это только после того, как попробовал отдельные контроллеры. Я думаю, что это сработало, потому что две концепции настолько тесно переплетены: вы не можете комментировать без сообщения в блоге.

1

Я нахожу, что ставка заключается в том, чтобы как только вы попали на уровень презентации (в этом случае веб-слой), вы должны группировать логически, а не технически. Если у вас есть таблица продуктов и категорий, вы можете создать контроллер каталога или контроллер магазина. Это поможет и позволит вам повторно использовать много кода и держать вещи организованными.

Смежные вопросы