【问题标题】:Updating the view with the new data in the viewmodel in MVC3, C#在 MVC3、C# 中使用视图模型中的新数据更新视图
【发布时间】:2012-08-07 16:25:47
【问题描述】:

我在控制器中有 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

提前谢谢你!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哦,好吧,那么我没有将它用于正确的目的。这很有帮助,谢谢!我会接受一点点的答案。该网站说我必须等待一段时间才能接受它:)
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 2012-04-29
      相关资源
      最近更新 更多