两个局部视图的相同模型实例(ajax)

时间:2012-06-01 08:31:27

标签: asp.net-mvc

以下是发生的事情:

  1. 部分视图A和B显示相同的模型
  2. 查看A通过Ajax(使用Ajax.BeginForm
  3. 更改数据
  4. 查看重新渲染本身(控制器从数据库中获取更新的模型)
  5. 现在我们还要重新渲染View B,因为数据已被更改,对吧?
  6. 我们从数据库中再次获取更新的模型 并重新渲染View B
  7. 如何阻止重新查询数据库?也许在会话中缓存模型实例?

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

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

1 个答案:

答案 0 :(得分:1)

您可以创建包含 A B 的新部分查看C 。每当模型更改时,您必须调用返回查看C 的操作。

<强>更新

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