这是发生的情况:
- 部分视图 A 和 B 显示相同的模型
- 视图 A 通过 Ajax 更改数据(使用
Ajax.BeginForm
) - 视图 A 重新渲染自身(控制器从数据库中获取更新的模型)
- 现在我们还必须重新渲染视图 B,因为数据已更改,对吗?
- 我们再次从数据库中获取更新的模型并重新渲染视图 B
如何防止重新查询数据库?也许在会话中缓存模型实例?
什么是"正确"的方法?
<!--works great when the page is rendered
via postback but what about Ajax?--!>
<div>
@Html.Partial(@ViewA", MyModelInstance)
@Html.Partial(@ViewB", MyModelInstance)
</div>
您能否创建一个同时包含 A 和 B 的新分部视图 C。每当模型更改时,您都必须调用返回视图 C 的操作。
更新:
我看到的另一个简单解决方案是当视图 A 更新模型而不是重新渲染视图时,通过 AJAX 获取更新的模型,并通过 javascript 更新 HTML 部分。如果你使用的是jquery,你可以使用模板插件来非常轻松地更新html。通过这种方式,您可以避免再发出一个不必要的请求来更新另一个视图 B。