Отрисовка частичного представления ASP NET MVC без представления формы запроса обратной передачи в контроллер?

Я использую ASP NET MVC4, я хочу использовать частичное представление для обновления основного представления. На сервере я получаю определенные события от другого сервера, и когда это происходит, я хочу обновить частичное представление и отправить его клиенту. Как я могу это сделать? Другими словами, мне нужен способ принудительного отрисовки частичного представления на стороне сервера без запроса обратной передачи от клиента. Возможно ли это, или сначала необходимо проинформировать клиента, а затем выполнить свое собственное действие обратной передачи, чтобы запустить частичную визуализацию представления?


person user3155141    schedule 21.01.2014    source источник


Ответы (2)


Вызвать следующий вызов Ajax для каждого другого события сервера или периодически вызывать его.

$.get('@Url.Action("ActionName", "ControllerName")', function (data) {
                $('#Id of div where Partial View is renderred').html(data);
});

В акции называется.

public ActionResult ActionName()
{
         //load your model with changes

         return PartialView("Name of your partial view", model);

}
person Amar Kate    schedule 22.01.2014
comment
Если я правильно понимаю, $ .get ('@ Url.Action ... вызывается клиентом для запуска рендеринга сервера. Это означает, что клиент должен знать, когда вызывать это, но только сервер знает, когда частичное представление необходимо (потому что он получает некоторые события от другого сервера, который указывает на необходимость показа обновления представления). Вызов его периодически или каждого другого события сервера приведет к частой перезагрузке представления. Не могли бы вы пояснить, понял ли я, что вы имеете в виду. - person user3155141; 23.01.2014
comment
Извините за поздний ответ, да, вы правильно поняли. да, это создаст ненужную перезагрузку представления. - person Amar Kate; 19.02.2014

Это лучшая работа для SignalR для крупномасштабных справок о работе в реальном времени:

[http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-serverinventory[1pting

Или, если вам просто нужно оставаться на одном носителе, вы можете изучить node.js, который является javascript на стороне сервера и позволяет привязать функцию js к событиям, управляемым сервером (т.е. независимо от клиента)

Последней мыслью было бы использовать события и отбрасывать ответы Web Api, но это будет иметь большой вес в JSON без запросов страниц.

person Nathan Teague    schedule 15.09.2014