我在一个视图中有一个局部视图,我可以通过以下方式从父视图中加载它:
<div id="listOfEntities">
@{await Html.RenderPartialAsync("_PartialView", Model.GetEntities());}
</div>
如您所见,部分视图使用父视图中的模型来获取要在部分视图中使用的实体的列表。
部分视图显示一个列表,当用户与父视图交互时,我想定期更新该列表。例如,我有以下ajax post方法,理想情况下,应在ServiceResult成功后更新我的局部视图,即:
$.ajax({
url: '/Controller/DeleteEntity',
type: 'POST',
data: { "SomeObject": object },
success: function (data) {
//DO SOMETHING HERE TO UPDATE THE PARTIAL VIEW
},
error: function (data) {
//Error from serviceResult - do not update view
}
});
由于我对Ajax方法没有足够的经验,所以我不知道我是否真的以正确的方式进行操作,因此我为什么要问这个问题。
由于它使用了父视图的模型,我什至可以更新部分视图?我是否需要创建一个单独的控制器来返回局部视图以及模型?
如果我在这里完全偏离轨道,我非常想知道我应该如何正确实现这一目标。
是的,您是正确的道路。只需添加一个将返回GetEntities()的方法。
public ActionResult _PartialView()
{
return PartialView(Model.GetEntities());
}
然后将加载函数放入ajax成功参数中。
$.ajax({
url: '/Controller/DeleteEntity',
type: 'POST',
data: { "SomeObject": object },
success: function (data) {
$('#listOfEntities').load('/<controller>/_PartialView');
},
error: function (data) {
console.log('something went wrong');
}
});