Я немного смущен тем, как три компонента - Модель, Представление, Контроллер - взаимодействуют друг с другом в архитектуре MVC. Иногда мне кажется, что я знаю, как работает MVC, а иногда мне кажется, что я не знаю его внутреннюю работу должным образом.
Что я знаю об архитектуре MVC -
- Запросы пользователей перехватываются Контроллером, будь то запрос URL
или любое событие, вызванное пользователем на странице. - Затем контроллер обрабатывает вводимые пользователем данные и обращается к модели.
- Модель подготавливает данные и отправляет обратно контроллеру.
- Наконец, контроллер передает данные обратно в представление и отображаются для пользователя.
Здесь, на мой взгляд, View никогда не разговаривает с моделью напрямую. Взаимодействие между представлением и моделью будет обрабатываться только Контроллером.
Все идет нормально!
Но когда я вижу диаграммы, подобные приведенным ниже, я запутываюсь. На приведенной ниже диаграмме стрелка влево показывает, что компонент View также может взаимодействовать с компонентом Model.
Также в этом коде В статье проекта написано, что «модель доступна как для контроллера, так и для представления» и «представление может использовать модель для отображения данных».
Пожалуйста, поясните, доступна ли модель только контроллеру или и контроллеру, и представлению. И если второй тоже правильный, то в какой ситуации это возможно. Я работаю над ASP.NET MVC Framework, и здесь любое взаимодействие осуществляется через объект контроллера. Я никогда не сталкивался с ситуацией, когда представление напрямую разговаривает с объектом модели.