2009-09-04 3 views
9

Я новичок. Я хочу спросить о модели MVC для разделения проблем. Я прочитал несколько руководств MVC, но у меня пока нет полного понимания ролей каждой модели, вида и контроллера.MVC - Разделение проблем

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

Мой вопрос заключается в соответствии с шаблоном проектирования, где я должен писать логику для генерации списков; в модели, представлении или контроллере?

Также приветствуются любые примеры MVC asp.net, демонстрирующие разделение проблем.

Спасибо заранее, ребята.

ответ

4

Рискуя повториться, я укажу вам на ответ, который я дал in this thread. The entire thread, вероятно, стоит вашего времени, как и десятки других в переполнении стека.

Чтобы разбить его просто:

Контроллеры - управление потоком заявок и принимает решения о данных.

Модели - выполняют бизнес-логику.

Просмотров - производство продукции.

Для вашей конкретной ситуации вы хотите создать свои списки в окне View. Используйте шаблоны для создания структуры списка и заполните их данными, полученными с уровня модели.

Я не программист asp.net, поэтому я не могу дать вам надежный пример, но есть охота вокруг других потоков SO.

1

Шаблон MVC «требует», чтобы вы ввели всю свою «бизнес-логику» в Модели. Модели используются для доступа к базе данных и сбора данных и форматирования их таким образом, что вам просто нужно использовать контроллер для его назначения в виде.

графический пример: http://www.bhartisoftland.com/technologies-skill-sets/gifs/mvc-php.png

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

3

Хороший вопрос, это субъективно, и есть много решений, это сводится к контексту, который я думаю, и к предпочтениям человека.

С реализацией ASP.Net MVC много людей говорят о том, что модель больше представляет собой ViewModel, чем модель, как в некоторых других рамках (в некоторой степени DTO). Учитывая это и рассматривая контроллер как только координатор потока приложения, было бы неправильно создавать списки на дополнительном уровне, доступ к которому можно получить через службу определенного типа.Вы должны сделать запрос к этой службе для набора ViewModels, которые удовлетворяют заданному набору критериев и позволяют этому лишнему слою беспокоиться о том, как эти списки генерируются из этого набора критериев. Таким образом, все, о чем должен знать контроллер, это передать некоторые критерии службе и предоставить представление с набором моделей (моделей просмотра) для отображения, представление не принимает никаких решений о том, что делать с данными, которые были предоставлены , и модели хороши и легки.

Надеюсь, что это объяснение имеет смысл, и я открыт для критики, если люди не согласны ...

Смежные вопросы