我已使用此link在我正在制作的信息中心上应用部分刷新。
我现在要弄清楚的是如何让它通过列表而不是随机化。我相信我必须找到一种方法来反复发送模型列表的ID值,以便将其递增1。
**问题是如何使网站按顺序迭代模型列表而不是随机。
任何帮助都会非常棒!谢谢!
答案 0 :(得分:1)
在您的示例中,Model定义为
public class Model
{
public int ID { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
}
哪个已有标识符。因此,要将此标识符从客户端发送到服务器端,您应该在表单中定义变量。因此,您应该将部分视图更改为
@model PartailViewAutoRefresh.Models.Model
@Html.HiddenFor(model => model.ID)
<img src="@Model.ImageUrl" alt="@Model.Name" title="@Model.Name" width="150px" height="150px"/>
现在应该调用ajax作为
<script type="text/javascript">
$(function () {
var contributorId = $("#ID").val();
setInterval(function () { $('#contributors').load('@Url.Action("GetContributor", "Home" })?id='contributorId); }, 3000); // every 3 sec
});
</script>
服务器应将操作更改为
public ActionResult GetContributor(int id)
你可以从你的例子中做出很少的改变
1.您应该将GetContributor
更改为HttpPost
。
[HttpPost]
public ActionResult GetContributor(int id)
setInterval(function () { $.ajax({
url: "@Url.Action("GetContributor", "Home"),
method: "POST",
data: { id : contributorId },
dataType: "html",
success : function(data) {
$('#contributors').html(data);
}
});
}, 3000);
});
答案 1 :(得分:0)
您的View with PartialView,必须通过按钮点击更新:
<div class="target">
@{ Html.RenderAction("UpdatePoints");}
</div>
有一些方法可以做到这一点。例如,您可以使用jQuery:
<script type="text/javascript">
$(function(){
$('.button')click(function(){
$.post('@Url.Action("PostActionToUpdatePoints", "Home")').always(function(){
$('.traget').Load('/Home/UpdatePoints');
})
});
});
</script>
PostActionToUpdatePoints是具有[HttpPost]属性的Action,用于更新点
如果您在动作UpdatePoints()中使用逻辑来更新点,可能您忘记为其添加[HttpPost]属性:
[HttpPost]
public ActionResult UpdatePoints()
{
ViewBag.points = _Repository.Points;
return PartialView("UpdatePoints");
}
链接:see here