Asp.Net MVC JQuery совершенство - PullRequest
4 голосов
/ 28 октября 2008

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 28 октября 2008

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

Вот пример для подхода jquery - игнорируйте тот факт, что это php. Appraoch то же самое, а именно в функции обратной передачи в вызове jason к объекту возврата json обращаются сразу, чтобы заполнить внешние элементы управления, которые принимаются через селектор css.

Альтернатива очень похожа - вместо ручной настройки содержимого элемента управления просто примените html, возвращаемый при частичном просмотре (убедитесь, что макет отменен, так как вам не нужны меню и т. Д. Только фрагмент html) .

3 голосов
/ 28 октября 2008

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

Вот довольно простой пример заполнения опций выбора через JQuery и MS MVC .

0 голосов
/ 30 октября 2008

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

На этом этапе вам нужно использовать возможности манипулирования DOM в jQuery, чтобы вставить новые значения в ваш список комментариев (или все, что вы пытаетесь обновить).

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

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