我有一个列出用户的页面(List.vbhtml),每个用户都有一个“编辑”链接。编辑链接发出Ajax请求:
@Ajax.ActionLink("Edit", "Edit", "Player", New With {.id = currentItem.PlayerId}, New AjaxOptions() with { .UpdateTargetId="edit"})
我的控制器中的Edit方法返回包含表单的局部视图(_Edit)。表单提交后,我想隐藏编辑表单(不是问题),然后重新加载用户列表。 这就是我正在努力的方法。
如何让父视图(List.vbhtml)知道我应该重新加载列表(这将使用Ajax Get请求完成)?
我不能从编辑局部视图中执行此操作,因为编辑局部视图不应该知道列表视图,只是相反(列表视图知道局部视图)。
我目前的解决方案是在_Edit.vbhtml中完成编辑时引发自定义事件,并在List.vbhtml中捕获它:
_Edit.vbhtml:
//let anyone listening know the edit is complete
$(document).trigger('PersonEditComplete');
List.vbhtml
//when player edit is complete, reload the player list
$(document).bind('PersonEditComplete', function () {
Player.List.Reload();
});
由于
答案 0 :(得分:1)
您可以使用jQuery。ajaxComplete()事件处理程序。您必须检查XHR方法是GET还是POST。获取将在加载用户编辑表单后,POST将在提交后进行。
因此,如果ajaxComplete在POST调用后触发,那么你应该通过Ajax刷新用户列表。