Когда я должен создать новый класс Controller в Asp.net MVC (вопрос проектирования)? - PullRequest
3 голосов
/ 17 января 2010

Прежде чем я задам вопрос, вот мое понимание контроллера в шаблоне MVC.

  1. Контроллер - это прикладной уровень (в DDD)
  2. Управляет потоком приложений.
  3. сохраняется тонким
  4. Управляет единицей работы (a.k.a Транзакция)

У меня вопрос " когда мне создавать новый класс контроллера? ". Я возьму пример в качестве DinnerController в NerdDinner .

  • Это контроллер для Обеденного модуля ? (Это модуль? ИМО, он слишком мал для модуля)
  • Если это так, я должен создать контроллер для каждого модуля ? И станет ли контроллер толстым?
  • Если это не так, когда я должен создать новый контроллер?

Лично я предпочитаю создавать класс Controller для варианта использования . Например, CreateDinnerControllelr, EditDinnerController, ListDinnerController, SearchDinnerController и т. Д. Но есть несколько недостатков IMO, таких как

  1. Иногда это нарушает принцип DRY (может потребоваться создать одну и ту же ViewModel в двух местах, например, при создании и редактировании может быть DinnerViewModel)
  2. Нужно явно определить маршрутизацию? (Я до сих пор предпочитаю маршрут как / Ужин / Создать , / Ужин / Редактировать / 1 )

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 января 2010

Обычной практикой является создание контроллера, связанного с каждым представлением. Когда приложение использует дизайн URL Restful, это обычно соответствует индексу, новым действиям, редактированию и удалению действий. Затем вы можете сопоставить метод для обработки каждого действия.

http://example.com/examples/1/edit - maps to edit method on ExamplesController
http://example.com/examples/1/new - maps to new method on ExamplesController
http://example.com/examples - maps to index method on ExamplesController
http://example.com/examples/1/delete - maps to delete method on ExamplesController

http://example.com/users/1/edit - maps to edit method on UsersController
http://example.com/users/1/new - maps to new method on UsersController
http://example.com/users - maps to index method on UsersController
http://example.com/users/1/delete - maps to delete method on UsersController
0 голосов
/ 26 мая 2011

После работы над ASP.net MVC и рельсами, я думаю, что контроллер должен создать для ресурса (в приложении REST ).

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