使用MVC3中的viewmodel中的新数据更新视图,C#

时间:2012-08-07 16:25:48

标签: c# asp.net-mvc-3 view model

我在控制器中进行了ajax调用,在更新数据库并成功完成后我可以这样做:

return PartialView("Overview", mydatamodel);

然后在成功中这样做:

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

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

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

这是我之前发布的帖子的链接,其中包含更多详细信息: MVC3 receiving the new model data after submit

提前谢谢!

2 个答案:

答案 0 :(得分:3)

如果要更新整个视图,请不要使用AJAX。只需使用提交按钮即可。 AJAX的重点是只更新视图的一部分而不导航离开当前页面。

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

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

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

答案 1 :(得分:1)

对于您只希望在请求完成后更新视图的一部分的情况,您通常会精确地使用AJAX。

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

的操作
window.location.href = '/Items/123';

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