ASP.NET MVC: структурирование контроллеров - PullRequest
10 голосов
/ 30 августа 2008

Итак, я приступаю к проекту ASP.NET MVC, и хотя опыт в целом был хорошим, я не настолько доволен беспорядком спагетти, каким стали мои контроллеры. Я просматривал онлайн (CodeCampServer и т. Д.), И все они, похоже, страдают одной и той же проблемой, когда методы контроллера довольно последовательно нарушают SRP (принцип единой ответственности) - например, метод контроллера, который просто отображает представление, если запрос GET, но обновляет model, если это POST. Теперь у меня есть методы контроллера, отвечающие за несколько логических маршрутов во всем приложении - скажем, он проверяет, для чего был нажат button в форме, и действует соответствующим образом. Я мог бы перенаправить каждое нажатие кнопки на другое действие формы, используя JavaScript, но что-то тут не так ... Другая большая проблема - распространение магии strings - ViewData["foo"] = blah; Короче говоря, как вы, ребята, structure ваш controller логика? Один гигантский модельный объект на вид? Много всего controller methods и JavaScript это роутер? Моя цель - ремонтопригодный код - по мере накопления функций я начинаю скатываться по этому скользкому склону ...

Ответы [ 2 ]

9 голосов
/ 30 августа 2008

ASP.NET Preview 5 (доступно для CodePlex ) имеет ответ на этот вопрос: атрибут [AcceptVerbs]. У Фила Хаака есть сообщение в блоге обсуждение, как оно используется.

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

0 голосов
/ 13 ноября 2008

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

Но мои контроллеры на данный момент монолиты. Беда в том, что я сосредоточился на изучении этого момента в проекте (все еще много, чтобы разобраться).

Сейчас я хорошо разбираюсь в MVC, так что пришло время рассмотреть сложность и рассмотреть вопрос о преобразовании контроллеров в более именованные и более чистые функции.

Другие люди разбивают свои контроллеры на субконтроллеры? (Если есть такая вещь)

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