ASP.NET MVC Best Practices

2

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

У меня есть 3 объекта: родитель, ребенок и GrandChild. Это пользовательские объекты, не использующие встроенные модели из MVC. Я хорошо разбираюсь в проверке. У меня есть хорошая ручка о том, как получить и заполнить мои объекты. Но я изо всех сил пытаюсь найти лучшие практики в отношении того, что делать с контроллерами. За что должен отвечать мой диспетчер? Например, должен ли я иметь один контроллер, который понимает, как CRUD Parent, Child и GrandChild? Или они должны быть разделены? Если они должны быть разделены, как мне это сделать, если, когда я смотрю на родителя, я хочу увидеть список детей.

Теги:
asp.net-mvc
design-patterns

2 ответа

3
Лучший ответ

Контроллер используется только для управления потоком потока запроса-ответа. Итак, в вашем примере контроллер никогда не должен знать, как их использовать. Логика CRUD должна быть обернута в класс репозитория модели.

Взгляните на официальный пример Nerd Dinner, и я лично лично люблю эту часть.

  • 0
    Я должен извиниться за отсутствие ясности, но на самом деле я имел в виду, что моя модель выполняет CRUD, а Контроллер разговаривает с моей моделью. Извините за путаницу.
  • 0
    Это зависит от того, насколько сложна ваша бизнес-модель. Для простого применения для контроллера нормально использовать класс репозитория для CRUD. Как вы можете видеть на обеде с ботаником, даже проверку логики ввода лучше реализовать вне контроллера. Я думаю, что для более сложных бизнес-моделей контроллер может лучше справляться только с «передачей» данных в классы бизнес-уровня.
0

Приложение Nerd Dinner - это простой пример. Я согласен с нажатием CRUD в репозиторий и, в общем, с использованием контроллера только для потока управления.

Однако, по моему опыту с ASP.NET MVC (правильным или неправильным), контроллер заканчивает работу с большим количеством переупорядочения данных перед передачей в представление и наоборот, когда принимает объектную модель как данные из форма сообщение. Но опять же, он просто делает перевод между тем, что нужно View, и тем, что требуется модели.

  • 0
    Точно, контроллер, действующий как мост между представлением и моделью. Убедитесь, что представление и модель не зависят друг от друга, и один интересный момент, который мне нравится от Nerdinner, заключается в том, что классы контроллеров также не должны зависеть от реального представления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню