这是另一种方法:
>使用AJAX和setTimeout
>在控制器中声明一个动作(这个动作将返回不同的值)
> ViewBag中的一个整数,有些像:ViewBag.totalItems
在控制器中声明一个动作:这很重要,因为这将是您与数据库或数据的连接.此操作将接收itemIndex并将返回该项.像这样的东西:
[HttpPost]
public JsonResult GetItem(int index) {
return Json(myList.ElementAt(index));
}
ViewBag.TotalItems:您的视图必须知道列表中有多少项.我建议您通过ViewBag将该值作为整数传递:
public ActionResult Index() {
ViewBag.TotalItems = myList.Count();
return View();
}
AJAX和setTimeout:一旦掌握了所有这些,您就可以在不刷新的情况下更新视图了:
$(function() {
var totalItems = @Html.Raw(Json.Encode(ViewBag.TotalItems));
var currentItemIndex = 0;
var getData = function() {
$.post("@Url.Action("GetItem")",{index:currentItemIndex},function(data) {
// data is myList.ElementAt(index)
// do something with it
}).always(function() {
currentItemIndex++;
if(currentItemIndex < totalItems) {
setTimeout(getData,1000); // get the next item every 1 sec
}
})
}
getData(); // start updating
})