Чи повинен контролер передавати дані в режим перегляду MVC?


11

Я працюю з ASP.NET MVC (та іншими веб-реалізаціями MVC) досить часто, але це те, в чому я ніколи не був впевнений: чи повинен контролер і перегляд спілкуватися?

Звичайно, контролер повинен вибирати, який вид використовувати, але що я маю на увазі, чи повинен контролер передавати дані в подання? На мою думку, якщо представлення очікує даних від контролера, вони ефективно пов'язані між собою як (контролер, перегляд) пари. Натомість, як правило, я маю вигляд спілкуватися із самою моделлю та бути незалежним від будь-якого контролера.

Чи маю правильний підхід, чи це випадок, коли немає правильної відповіді? Чи змінюється відповідь під час роботи в Інтернеті порівняно з іншими середовищами? Чи змінюється відповідь, якщо у вас є концепція сильно набраного перегляду (як, наприклад, в ASP.NET MVC) чи ні?


Саме для цього використовується "M" у "MVC" - Моделі - яка представляє дані, що передаються від Контролера до Перегляду.
Джей Салліван

Відповіді:


7

Контролер готує дані, які надалі будуть передані в режим перегляду для відображення / відображення. Він також приймає вхідні дані користувачів через механізм публікації-підписки або подібне. Перегляньте першу діаграму на Вікіпедії або на веб-сайті Мартіна Фаулера для отримання додаткової інформації про MVC.

якщо представлення очікує даних від контролера, вони ефективно пов'язані між собою як (контролер, перегляд) пари.

Хоча представлення, як правило, приймає дані, у більшості MVC-фреймів воно не залежить від конкретних контролерів. Виняток становлять, наприклад, родина JavaServer Faces. Взагалі кажучи, такі рамки, як Rails, Django або Spring MVC, дозволяють вам від'єднати представлення даних від контролерів, передаючи дані (контекст, зазвичай карта / словник / мішок) до подання (де подання є реалізацією шаблону подання шаблону ).

Чи змінюється відповідь, якщо у вас є концепція сильно набраного перегляду (як, наприклад, в ASP.NET MVC) чи ні?

Незалежно від того, незалежно від того, наскільки сильно набрана мова програмування, це не впливає на спосіб організації організації вашої заявки.


Які дані готуються та передаються? Візьмемо простий приклад: показ статті за його ідентифікатором. Це ідентифікатор, який передається після перевірки (він може не вказувати на статтю), або контролер отримує статтю з бази даних і передає її через?
Енді Хант

Якщо ви лише передаєте ідентифікатор, ваш погляд не робить більше роботи, ніж надання? Треба було б отримати дані, які, ймовірно, не були б у дусі зразка.
Rig

1

Питання, яке ви ставите, час від часу обговорюється в моїй команді. Ми сперечаємось про два підходи, які мають і свої плюси, і плюси.

Перший стверджує, що контролер може оновлювати подання за наступною схемою. Він слухає як графічний інтерфейс, так і модельні події. Коли відбувається подія GUI, вона виконує необхідні дії в моделі, яка в свою чергу викликає і подія. Тепер контролер зазвичай оновлює подання потрібними даними.

Другий підхід стверджує, що сам погляд слухає події моделі та оновлює себе даними, які додаються до події, або шляхом запиту моделі.

У першому підході ви маєте більше влади до контролера, який дійсно контролює все, що відбувається у вашій програмі. Право вирішувати, яким способом погляд слід оновлювати залежно від того, яка подія знаходиться в його руках, і таким чином ви зберігаєте погляд. Однак, як ви вже сказали, таким чином у вас є перегляд і контролер, пов'язані.

По-друге, ти розв'язуєш їх, але твій погляд насправді контролює себе деяким чином.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.