1

我在控制器中有 ajax 动作调用,在它更新数据库并成功完成后,我可以这样做:

return PartialView("Overview", mydatamodel);

然后在成功中这样做:

success: function (data) { 
            // do something with the data => refresh some
            // portion of your DOM
            $('#someDivId').html(data);
        }

它可以正常工作,但我需要的是要更新视图模型中的集合,并使用新数据再次渲染整个视图。

我可以这样做,例如我有提交按钮,然后用新数据更新整个视图,但是如果我有 ajax 调用,我该怎么做。

这是我以前的帖子的链接,其中有更多详细信息: MVC3 在提交后接收新模型数据

先感谢您!

4

2 回答 2

3

如果要更新整个视图,请不要使用 AJAX。只需使用提交按钮。AJAX 的全部意义在于只更新视图的一部分而不离开当前页面。

顺便说一句,您可以使用以下方式在客户端重定向window.location.href

success: function (data) { 
    window.location.href = '@Url.Action("Overview", "SomeController")';
}

但如果您总是在成功的 AJAX 回调中重定向,则确实没有必要这样做。在这种情况下,您不应该使用 AJAX。

于 2012-08-07T16:27:40.283 回答
1

您通常将 AJAX 准确地用于只希望在请求完成后更新部分视图的情况。

如果您出于某种原因需要在这种情况下使用 AJAX(例如,使用DELETEHTTP 动词发送请求),您可能会执行类似的操作

window.location.href = '/Items/123';

在您的success回调函数中,这有效地触发了整页更新。

于 2012-08-07T16:31:00.617 回答