1

这是发生的事情:

  1. 局部视图 A 和 B 显示相同的模型
  2. 视图 A 通过 Ajax 更改数据(使用Ajax.BeginForm
  3. View A 重新渲染自己(控制器从数据库中获取更新的模型)
  4. 现在我们也必须重新渲染视图 B,因为数据已经改变了,对吧?
  5. 我们再次从数据库中获取更新的模型并重新渲染视图 B

如何防止重新查询数据库?也许在会话中缓存模型实例?

这样做的“正确”方法是什么?

<!--works great when the page is rendered
    via postback but what about Ajax?--!>
<div>
@Html.Partial(@ViewA", MyModelInstance)
@Html.Partial(@ViewB", MyModelInstance)
</div>
4

1 回答 1

1

您可以创建一个包含AB的新局部视图 C吗?每当模型更改时,您都必须调用返回视图 C的操作。

更新:

我看到的另一个简单解决方案是当视图 A更新模型而不是重新渲染视图时,通过 AJAX 获取更新的模型并通过 javascript 更新 HTML 部分。如果您使用的是 jquery,您可以使用模板插件很容易地更新 html。通过这种方式,您可以避免再发出一个不必要的请求来更新另一个View B

于 2012-06-01T09:12:27.127 回答