【发布时间】:2011-08-28 07:16:32
【问题描述】:
使用这样的设置处理项目:
- ASPX 页面
- 用户控制 1
- 单选按钮 1-12
- 用户控制 2
- 根据单选按钮 1-12 计算的值标签
- 用户控制 1
两个用户控件都是数据绑定的,都有一个从 ASPX 页面调用的“SaveData”方法。
UserControl2 中的值在标签中。第一个是单击的单选按钮的编号(1 到 12),第二个是根据该编号计算的值。
当页面被保存时,值被正确保存并重新填充单选按钮。当 UserControl 重新填充时,标签仍然是旧值。
如果您然后将光标放在地址栏中并刷新,您会遇到同样的问题。但是如果你 CTRL + Refresh,一切都很好。
很明显,我遇到了第二个 UserControl 缓存的问题。我该如何解决这个问题,为什么第一个 UserControl(带有单选按钮)不缓存?
编辑
在测试时,我添加了一个与 RadioButton 和 Label 绑定到相同值的 TextBox。 3 个控件,在 Field1 上使用 Bind 的 RadioButton,在 Field1 上使用 Eval 的 TextBox 和 Label(但尝试过 Bind 也不起作用)。
我将 RadioButton 从 1 更改为 3 并保存。
在 PostBack 上,RadioButton 已正确更新为 3。TextBox 和 Label 仍然显示为“1”。
然后我将 RadioButton 更改为 6 并在 TextBox 中键入“4”(测试值的更改是否会强制更新,即使它是在 EVAL 上,而不是 BIND)并点击“Save”。
在 PostBack 上,RadioButton 在 6 时是正确的,但 TextBox 和 Label 都显示为“3”。
不知道这意味着什么,但有人可能会理解。
【问题讨论】:
-
另外,因为我知道这个问题会被问到,所以我们假设它的设置结构不能改变。
-
请发布您的代码。我认为这不是缓存问题。
-
对于有效的控件,有太多代码要发布。对于没有的控件,后面的代码中没有任何内容。只是控件中的一个 ObjectDataSource 和 Bind。
-
是否涉及任何 Ajax,即 UpdatePanel?
-
两个用户控件是否在页面周期的同一点填充?不过,这并不能解释浏览器缓存。我不确定这是怎么发生的,除非你真的修改响应头来做到这一点。
标签: c# asp.net data-binding browser-cache