在 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# 中使用视图模型中的新数据更新视图的主要内容,如果未能解决你的问题,请参考以下文章