Я занимаюсь разработкой простого веб-сайта с использованием asp.net MVC, и я начинаю добавлять доброту JQuery \ JSON.
Моя проблема заключается в том, что до сих пор все мои «представления» были строго типизированы, и я строил представление на основе данных из ViewData.Model.MyViewsData. Теперь, когда представление было отрисовано, и я выполняю запрос в стиле Ajax, я получаю новые данные в формате JSON, и мне нужно обновить свое представление. Теперь, как я могу обновить свое представление новыми данными, если у меня больше нет доступа ко всем исходным ViewData?
Я предполагаю, что мне нужно одно из двух: всегда получать данные обратно с помощью Jquery \ JSON и забывать об использовании ViewData или выполнять какой-то частичный рендеринг моего представления ?!
Будем очень признательны за любые учебные пособия или образцы.
Огромное спасибо
Я использую jQuery и Monorail для фреймворка MVC - и мы используем оба подхода.
Вот пример подхода jquery - игнорировать тот факт, что это php. Подход тот же, а именно в функции обратной передачи в вызове JSON, к возвращаемому объекту JSON осуществляется прямой доступ для заполнения интерфейсных элементов управления, доступ к которым осуществляется через селектор css.
Альтернатива очень похожа (заархивированный здесь) - вместо ручной настройки содержимого элемента управления просто примените html, возвращенный в частичном представлении (гарантируя, что макет отменен, поскольку вы не хотите, чтобы меню и т. д. Были только фрагментом html).
ViewData - это серверная вещь. Он используется механизмом просмотра для отображения вашей страницы перед отправкой в браузер. Javascript запускается в браузере после доставки страницы. Поэтому, когда вы вызываете $ .getJson или что-то еще, вы имеете дело исключительно с DOM.
Вот довольно простой пример заполнение опций выбора через JQuery и MS MVC.
Если вы используете метод JSON контроллера для возврата данных для вашего запроса Ajax, вы можете сериализовать свои данные в Json, и тогда у вас будет доступ к нему из вашего JavaScript. Так, например, если у вас есть форма комментария внизу страницы статьи / сообщения в блоге и вы хотите добавить комментарий с помощью вызова jQuery $ .post, вы можете создать объект комментария в своем контроллере, вернуть его, используя " return JSON (theNewComment); " а затем в функции возврата в jQuery вы можете получить доступ к свойствам объекта комментария. Вы не получите intellisense, но если объект был правильно создан и возвращен, данные будут там.
На этом этапе вам нужно использовать возможности jQuery для манипулирования DOM, чтобы вставить новые значения в ваш список комментариев (или что-то еще, что вы пытаетесь обновить).
Поскольку это вызов Ajax, вам не нужны все ваши ViewData (поскольку страница не обновляется), только то, что было создано / обновлено.