我在MVC中有一个简单的Ajax表单。在AjaxOptions中,OnComplete设置为一个简单的JavaScript函数,它只执行一件事-返回false。
@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { UpdateTargetId = "DivFormId", HttpMethod = "Post", OnComplete = "preventUpdate" }))
function preventUpdate(xhr) {
return false;
}
问题是,页面已经更新了。例如,在某些情况下,控制器在 postback 后返回部分视图,在其他情况下,它返回一些 JSON 对象。当返回部分视图时,我希望它更新页面,并在返回 JSON 时显示对话框窗口。不幸的是,当返回 JSON 时,即使 OnComplete 函数返回 false(如 MSDN 所述:要取消页面更新,请从 JavaScript 函数返回 false),它也会清除页面(使用 JSON 更新)。如何根据接收到的响应来防止页面更新?
谢谢!
----- 更新 -------
到目前为止,我找到了以下解决方案。当我不指定 UpdateTargetId 时,我可以手动处理响应。但这仍然不是文档化的行为,配合 return false 使用。