2016-03-08 95 views
2

我想更新MVC視圖中的表中的一列數據。 這是我想要更新的視圖。自動刷新多個div MVC

<table class="table"> 
<tr> 

    <th> 
     @Html.DisplayNameFor(model => model.CurrentTemperature) 
    </th> 

    <th></th> 
</tr> 
@{int i = 1;} 
@foreach (var item in Model) 
{ 
    <tr> 
     <td align="center" @*id="@("current"+i)" data-id="@item.ID"*@> 
      <div id="@("current"+i)" data-id="@item.ID"> 
       @{Html.RenderAction("TemperatureUpdateDeviceList", new { idDevice = item.ID });} 
      </div>  
     </td> 

    </tr> 
    i++; 
} 
</table> 

我寫了一個簡單的腳本來更新div。只是爲了嘗試,我決定只更新id = current4的第四個div。

$(function() { 

    setInterval(function() { 
     var id = $(this).attr('data-id'); 
      $.ajax({ 
       url: '@Url.Action("TemperatureUpdateDeviceList")', 
       type: 'GET', 
       data: { idDevice: id}, 
      }).success(function (partialView) { 
       $('#current4').html(partialView); 
      }); 
    },3000); 
}); 

使用這種方法,因爲所生成的URL是不正確的,我不能進行正確的請求。如何獲得正確的網址?該TemperatureUpdateDeviceList函數定義爲

注意:

public PartialViewResult TemperatureUpdateDeviceList(int idDevice) 
    {    
     return PartialView(temperatureModel); 
    } 
+0

Url.Action()生成的URL是什麼?你在找什麼網址? –

+2

你的基本網址是正確的,但你的'id'不會是('$(this)'不是元素)。沒有必要給你div一個id屬性。你可以使用類名得到所有的div,並使用'$ .each()'循環,你可以使用$(this).data('id')'和'$(this)。 html(partialView)' –

+0

它不返回參數:idDevice – Daniele

回答

3

您使用的var id = $(this).attr('data-id');將無法​​通過data-id值,因爲$(this)不是你<div>元素。如果你想更新你所有的元素,然後將HTML改爲

<div class="container" data-id="@item.ID"> 
    @{Html.RenderAction("TemperatureUpdateDeviceList", new { idDevice = item.ID });} 
</div> 

注意id屬性是沒有必要的。然後在腳本中使用

var url = '@Url.Action("TemperatureUpdateDeviceList")'; 

setInterval(function() { 
    $('.container').each(function() { 
     var id = $(this).data('id'); 
     var div = $(this); 
     $.get(url, { idDevice: id}, function(partialView) { 
      div.html(partialView); 
     }); 
    }); 
},3000); 
+0

非常棒!謝謝! – Daniele