【发布时间】:2010-09-24 13:04:46
【问题描述】:
有没有办法从控制器刷新几个局部视图? (返回视图())
谢谢,
更新1: 例如,我屏幕的内容部分分为两部分,左侧是客户列表,右侧是详细客户,左侧列表中选择的客户的详细信息。如果我创建一个新客户,当我保存时,我会刷新列表(左侧)并查看详细信息(右侧)
【问题讨论】:
-
使用 Ajax 或通过 httpost,欢迎所有解决方案
有没有办法从控制器刷新几个局部视图? (返回视图())
谢谢,
更新1: 例如,我屏幕的内容部分分为两部分,左侧是客户列表,右侧是详细客户,左侧列表中选择的客户的详细信息。如果我创建一个新客户,当我保存时,我会刷新列表(左侧)并查看详细信息(右侧)
【问题讨论】:
克里斯,
我能想到的唯一方法就是将多个局部视图嵌入到要刷新的主“视图”中。然后这些将在同一个周期中刷新。或者,您可以在主视图中嵌入自定义 html 帮助程序,在刷新视图时运行适当的代码。
对于单个操作的多个视图,我认为这既不是一个好主意,也不是任何可能的方法。
当然,规则是要被打破的:)
【讨论】:
我认为没有任何自动方法可以做到这一点,但您可以使用一些约定:
对于最后一步,您可以使用约定。一个简单的方法是(如果每个局部视图只有一个实例)将要更新的目标 html 元素的 id 放入您在第二步中用来包装它的 div/container 中。
【讨论】:
根据您的说法,我认为最好使用 javascript 和 ajax 从服务器刷新。
您可以使用 Html.RenderPartialAction 将其放在页面上,然后使用 ajax 和 javascript 加载它来实现 DRY。
如果你使用的是 jQuery,那么这样的事情会起作用:
jQuery("#divToReload1").load('Url/To/PartialAction')...
jQuery("#divToReload2").load('Url/To/PartialAction')...
只需将所有内容放在一个函数中,您就会立即重新加载所有部分。
您可以通过使用data参数发送数据,并捕获回调函数为您所想。
【讨论】: