ASP.net MVC — как представление получает доступ к модели?

Во всех диаграммах MVC, которые я видел, всегда существует связь между представлением и моделью, что указывает на то, что представление имеет доступ к модели.

Мне просто интересно: когда это применимо? На данный момент у меня есть действие контроллера, принимающее параметр из QueryString, запрашивающее модель, чтобы получить MyObjectViewData, а затем возвращающее представление, передавая MyObjectViewData. Так что, по сути, у меня есть контроллер между ними.

Это кажется логичным подходом, но он не соответствует предположению о том, что у Model и View есть совместный бизнес.

Каковы типичные ситуации, когда они взаимодействуют без контроллера?


person Michael Stum    schedule 03.05.2009    source источник


Ответы (1)


В MVC (в Интернете) представление напрямую взаимодействует с моделью, отображая конкретный экземпляр объекта модели. Он только косвенно воздействует на Модель через Контроллер. В не-веб-реализации вы можете использовать шаблон наблюдателя для регистрации обработчиков с элементами представления, которые могут вызывать методы в модели, которые обновляют модель без взаимодействия с контроллером. ASP.NET MVC и другие веб-реализации более слабо связаны, чем не-веб-реализации. На мой взгляд, это хорошо. Это, как правило, делает реализацию контроллера намного более толстой, и вам нужно быть осторожным, чтобы сохранить разделение задач между контроллером и моделью.

Веб-реализации, вероятно, должны быть нарисованы без косвенной связи между Моделью и Представлением, поскольку вы не можете на самом деле общаться между ними без Контроллера. Я полагаю, можно было бы возразить, что веб-служба может обеспечить это соединение, но я бы считал это просто еще одной формой контроллера.

person tvanfosson    schedule 03.05.2009