ASP .NET MVC - Количество контроллеров - PullRequest
2 голосов
/ 01 апреля 2009

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

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

/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

Ответы [ 4 ]

3 голосов
/ 01 апреля 2009

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

1 голос
/ 01 апреля 2009

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

0 голосов
/ 01 апреля 2009

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

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

0 голосов
/ 01 апреля 2009

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

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

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