在 MVC3、C# 中使用视图模型中的新数据更新视图

Posted

技术标签:

【中文标题】在 MVC3、C# 中使用视图模型中的新数据更新视图【英文标题】:Updating the view with the new data in the viewmodel in 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

提前谢谢你!

【问题讨论】:

【参考方案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 回调函数中,它有效地触发了整页更新。

【讨论】:

以上是关于在 MVC3、C# 中使用视图模型中的新数据更新视图的主要内容,如果未能解决你的问题,请参考以下文章

MVC3 自定义视图库

MVC3 模型到数据库视图

如何在没有模型的情况下验证 MVC3 中的强类型视图

有没有办法更新视图中的模型?

C# mvc 3 在视图中使用带有选定值的选择列表

在视图中的模型之间导航的 MVC 3 错误