ASP.NET MVC: структурирование контроллеров

StackOverflow https://stackoverflow.com/questions/36197

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top