MVC 4部分视图刷新列表
本文关键字:刷新 列表 视图 4部 MVC | 更新日期: 2023-09-27 18:26:12
我使用此链接对我制作的仪表板进行了部分刷新。
我现在想弄清楚的是如何使它通过列表而不是随机化。我相信我必须找到一种方法来来回发送我为模型列表所拥有的ID值,以便将其增加一。
**问题是如何使网站按顺序而不是随机地遍历模型列表。
任何帮助都会很棒,谢谢!
在您的示例中,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)
- 为了安全起见,您应该将其更改为HttpPost,而不是调用HttpGet操作的.load方法;从客户端使用$.ajax或$.post
setInterval(function () { $.ajax({
url: "@Url.Action("GetContributor", "Home"),
method: "POST",
data: { id : contributorId },
dataType: "html",
success : function(data) {
$('#contributors').html(data);
}
});
}, 3000);
});
您有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");
}
链接:请参阅此处