Обновление частичного просмотра в MVC 3 - PullRequest
1 голос
/ 23 января 2012

У меня есть частичное представление, которое я включил в свой _Layout.cshtml. Он просто имеет функцию javascript, которая меняет изображение в зависимости от состояния моей системы. Мне не нужно перезагружать какие-либо данные, мне не нужно ни к чему переходить к коду контроллера, мне просто нужно перезагрузить это частичное представление.

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

Спасибо

Steve

Ответы [ 2 ]

6 голосов
/ 23 января 2012

Если часть загружена непосредственно в макет, то нет простого способа обновить ее, потому что это, по сути, часть полной отрендеренной страницы.

Лучше всего визуализировать часть с использованием $.loadили любой другой эквивалент, который вы имеете, нажав метод контроллера и отобразив результат в контейнер (например, div).Вы должны будете сделать это в скрипте, который загружен с самим макетом, наблюдая document.ready или что-то в этом роде.После того, как вы это сделаете, тривиально будет продолжать перезагружать или обновлять содержимое, нажимая на метод контроллера столько раз, сколько вам нужно.Например, в jQuery:

$(document).ready(function () {
    RefreshPartial();
    window.setInterval(RefreshPartial, 10000);
});

function RefreshPartial() {
    $('#container').load('/some/controller/endpoint', {parameters});    
}

Это вызовет метод контроллера и установит внутреннее содержимое элемента, обозначенного #container.Вы можете звонить RefreshPartial столько раз, сколько хотите.

1 голос
/ 23 января 2012

Частичные представления существуют только на сервере. Единственный способ «обновить» партиал - это вернуться на сервер, чтобы получить его снова.

Очевидно, вы должны делать что-то в частичном, которое нуждается в обновлении. Что бы это ни было, он должен вызываться из javascript для обновления.

...