Как MVC обрабатывает недостающие требования к данным - PullRequest
0 голосов
/ 19 апреля 2010

Я учу себя концепциям MVC в надежде применить их в не-OO / процедурной среде разработки. Я почти уверен, что понимаю простой Вид -> Запрос -> Контроллер -> Запрос -> Модель -> Ответ -> Контроллер -> Ответ -> Просмотр потока.

С чем я борюсь, так это с пониманием более сложных сценариев. Например, допустим, у меня есть форма корзины покупок с кнопкой «Рассчитать доставку». Обычно нажатие на эту кнопку будет следовать вышеописанному потоку. Но что, если отсутствуют данные, такие как почтовый индекс? Должен ли View сначала проверить это и предупредить пользователя перед тем, как сделать запрос «Рассчитать доставку»? Или должен быть сделан запрос, и Модель возвращает уведомление об отсутствии важных данных? Если последнее, Контроллер дает команду Представлению предупредить пользователя? Что, если я хотел бы запросить у пользователя отсутствующий почтовый индекс (возможно, во всплывающем окне ввода), а затем автоматически запросить метод «Рассчитать доставку»?

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

Ответы [ 2 ]

0 голосов
/ 19 апреля 2010

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

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

Но, во-вторых, вы решаете проверить данные (например, «Является ли почтовый индекс действительным для континентальной части США?»), Которые следует отнести к самой модели данных.

Я видел ситуации, когда представление создается с помощью серии регулярных выражений для предварительной проверки (по одному на поле), чтобы не излишне обременять другие слои. Это означает, что введенные данные проходят, по крайней мере, первый уровень проверок работоспособности, а затем возвращаются для более полной проверки.

И, кроме того, никогда не используйте термин «проверка работоспособности» в пользовательской документации, когда ссылаетесь на проверку того, что пользователь ввел. Вы можете подумать, что это невинная фраза, но пользователь не всегда так думает: -)

0 голосов
/ 19 апреля 2010

Есть несколько вещей, которые вы можете сделать:

  1. Проверка почтового индекса на стороне клиента (в браузере) с использованием Javascript или jQuery
  2. Отправьте запрос Ajax на сервер для проверки почтового индекса и попросите контроллер вернуть результат проверки в браузер, или
  3. Опубликовать всю страницу, проверить ее и вернуть пользователю ту же страницу с указанием ошибки, если почтовый индекс отсутствует.

Напоминание: вам все равно придется снова проверять данные на сервере, как только страница будет размещена. Никогда не доверяйте данным, поступающим с веб-страницы, даже если они уже были проверены на клиенте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...