刷新几个局部视图

时间:2010-09-24 13:04:46

标签: asp.net-mvc asp.net-mvc-2

有没有办法从控制器刷新几个局部视图? (返回View())

谢谢,

UPDATE1: 例如,我的屏幕的内容pârt分为2部分,左边是客户列表,右边是客户详细信息,客户详细信息在左侧列表中选中。如果我创建一个新客户,当我保存时,我会让列表刷新(左侧部分)并查看详细信息(右侧部分)

3 个答案:

答案 0 :(得分:0)

克里斯,

我能想到的唯一方法就是在主要的“视图”中嵌入多个部分视图以进行刷新。然后,这些将在同一周期中刷新。或者,您可以在主视图中嵌入自定义html帮助程序,在刷新视图时运行approprite代码。

对于单一动作的多个视图,我认为这不是一个好主意或以任何可能的方式。

当然,规则有待破解:)

答案 1 :(得分:0)

我认为没有任何自动方法可以做到这一点,但你可以使用一些约定和:

  • 创建一个自定义视图结果,该结果包含多个部分视图结果,即MultiplePartialViewResult
  • 在执行自定义视图结果时,调用每个提供的视图的execute方法。确保将每个容器包装在div或其他容器中,以便于在客户端脚本中检索
  • 在客户端脚本中收到对AJAX调用的响应后,从每个容器中获取值并将其替换为与最初呈现的部分视图匹配的相应元素

对于最后一步,您可以使用约定。一个简单的例子就是(如果每个局部视图只有一个实例)将目标html元素的id放在你用来在第二步中包装它的div /容器中更新。

答案 2 :(得分:0)

根据你所说的,我认为使用javascript和ajax从服务器刷新是最好的。

你可以使用Html.RenderPartialAction将它放在页面上来实现DRY,然后使用ajax和javascript加载它。

如果你使用的是jQuery,那么这样的东西就可以了:

jQuery("#divToReload1").load('Url/To/PartialAction')...
jQuery("#divToReload2").load('Url/To/PartialAction')...

只需将所有内容放在一个函数中,然后立即重新加载所有部分内容。

您可以使用data参数发送数据,并根据需要捕获回调函数。