ASP.NET MVC 3 отображает список объектов без перезагрузки веб-страницы - PullRequest
0 голосов
/ 01 марта 2012

У меня есть веб-приложение ASP.NET MVC 3 и список объектов

List<ConversionModel> Queue

Я хотел бы отобразить список объектов ConversionModel на одной веб-странице и обновлять отображение каждые пять секунд без перезагрузки веб-страницы. Я новичок в MVC 3 и не могу найти ни одного примера.

Ответы [ 3 ]

1 голос
/ 01 марта 2012

Вы можете использовать AJAX для этого, но я не думаю, что это будет иметь хорошее влияние на ваш сервер (по крайней мере, каждые пять секунд для каждого пользователя на вашем сайте).сторона:

<script type="text/javascript">
    // This is to refresh the items every 5 seconds (5000 milliseconds)
    setInterval(getMyData, 5000);

    function getMyData() {
        // Using $.getJSON for simplicity, but try to use $.ajax or $.post
        $.getJSON('/MyController/MyAction', function(response) {
          var items = response.d.items;
          // Iterate through the items here and add the items to your web page
        });
    }    
</script>

Сторона сервера:

public JsonResult MyAction()
{
     List<ConversionModel> conversionModels = GetMyDataSomewhere();
     return Json(new {
         items = conversionModels
     }, JsonRequestBehaviour.AllowGet);
}
0 голосов
/ 01 марта 2012

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

В-третьих, вам понадобится метод действия в одном из ваших контроллеров, извлекающий набор ConversionModels из базы данных и генерирующий из него ответ (либо JSON, либо непосредственно HTML-разметку).

Если вы прочтете документацию по функции $.ajax(), я думаю, вы увидите, как кусочки сочетаются друг с другом.

Однако, если вы хотите быть более гибким, чем просто опрашивать сервер каждые пять секунд, независимо от реальной активности, вы можете включить SignalR , отличную библиотеку для передачи данных с сервера на клиент (например, браузер).

0 голосов
/ 01 марта 2012

используйте jQuery, а make ajax запрашивает каждые x минут контроллер, который возвращает частичное представление с моделью в виде списка.

JavaScript на вашей главной странице может выглядеть так:

function timerMethod() {
    $.ajax({ 
        type: "get"
        url: "/Controller/Action",
        cache: false,
        success: function(result){
        $("#partialContainer").html(result);
    }
});

var timerId = setInterval(timerMethod, 5000); // 5 seconds

Контроллер / Действие - это ваше действие, которое возвращает частичное представление.

Вам также необходимо создать представление с именем Action в Views \ Controller и записать его так, чтобы оно отображало все объекты в модели (модель должна иметь тип List<ConversionModel>). Надеюсь, это поможет

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