2008-10-28 3 views
4

Я разрабатываю простой веб-сайт с использованием asp.net MVC, и я начинаю добавлять JQuery \ JSON доброту.Asp.Net MVC JQuery goodness

Моя проблема до сих пор, все мои «представления» были сильно типизированы, и я строил представление на основе данных из ViewData.Model.MyViewsData. Теперь, когда представление было обработано, и я делаю запрос стиля Ajax, я получаю новые данные как JSON, и мне нужно обновить свое представление. Теперь, как я могу обновить свое представление новыми данными, когда у меня больше нет доступа ко всем оригинальным ViewData?

Я предполагаю, что мне нужно сделать одну из двух вещей: всегда извлекать данные с помощью Jquery \ JSON и забывать об использовании ViewData или делать частичный рендеринг моего представления ?!

Любые учебные пособия или образцы будут оценены наиболее высоко.

Большое спасибо

ответ

4

Я использую JQuery монорельса для рамок MVC - и мы используем оба подхода.

Here's an example for the jquery approach - игнорировать факт, что это php. Оценка одинакова, а именно в функции обратной передачи в вызове jason, к объекту возврата json обращается адрес, чтобы заполнить элементы управления front-end, которые доступны через селектор css.

The alternative is very similar - вместо ручной настройки содержимого управления просто примените html, возвращенный в частичном представлении (гарантируя, что макет отменен, так как вы не хотите, чтобы меню и т. Д. Просто фрагмент html).

3

ViewData - это серверная вещь. Он используется механизмом просмотра для отображения вашей страницы до ее отправки в браузер. Javascript запускается в браузере после доставки страницы. Поэтому, когда вы вызываете $ .getJson или что-то еще, вы имеете дело с DOM.

Вот довольно простой пример filling select options via JQuery and MS MVC.

0

Если вы используете метод JSON контроллера для возврата данных для вашего запроса Ajax, вы можете сериализовать свои данные в Json, а затем у вас есть доступ к нему из вашего JavaScript. Так, например, если у вас была форма комментариев в нижней части страницы статьи/статьи блога, и вы хотели добавить комментарий через вызов jQuery $ .post, вы могли бы создать объект комментария в своем контроллере, вернуть его с помощью " возвращение JSON (theNewComment); " а затем в вашей функции возврата в jQuery вы можете получить доступ к свойствам объекта комментария. Вы не получите intellisense, но если объект был правильно создан и возвращен, данные будут там.

В этот момент вам нужно использовать возможности манипуляции JQuery DOM, чтобы подключить новые значения в список комментариев (или что бы вы ни пытались обновить).

Поскольку это вызов Ajax, вам не нужно все ваши ViewData (поскольку страница не обновляется), просто материал, который был создан/обновлен.