我正在将ASP.NET应用程序从3.5SP1移植到4.0。该应用程序在3.5sp1中运行良好。在4.0中,我看到了updatepanel行为的不同。
我们有一个简单的用户控件,包含一个测试框、一个按钮和一些文本。用户控件位于updateMode=“Conditional”和childAstriggers=“true”的updatePanel中。
用户输入文本框并单击按钮。我们进行搜索。如果我们发现了什么,页面上其他地方的内容就会更新——这很好。如果找不到,我们将更改用户控件中的文本。这种变化从未出现过。
所以我知道按钮和逻辑在工作。用户控件不拥有它所在的UpdatePanel,如果不必这样做的话,那就更好了。但是,即使该按钮正在将事件引发回服务器,更新面板内容也不会更新。
有人看到这个吗?
我的问题是4.0的新客户机ID机制。查看新功能 here .
4.0默认为“inherit”,而“autoid”是“old”行为。通过将其添加到web.config pages元素:
clientIDMode="AutoID"
我的问题消失了。我并不热衷于强制向后兼容的行为,但在我能够整理出所有的控制关系之前,这是必须的。