欢迎进入.NET社区论坛,与200万技术人员互动交流 >>进入
UpdatePanel的功能大家一定都非常熟悉了。无论是官方还是社区里热心推广ASP.NET AJAX的朋友,都会对于UpdatePanel的使用进行大量说明与展示。但是在这些简单的的示例似乎都遗漏了一个非常重要的问题,这个问题会直接导致UpdatePanel无法正确使用。
这个问题就是ASP.NET Page的缓存。
ASP.NET Page是个非常强大的模型,缓存是它的重要特性。一个成熟的ASP.NET应用程序几乎都会使用缓存,它能够显著得提高性能,减少服务器端生成页面或者控件内容的消耗。不过现在出现了UpdatePanel这个“神奇”的控件,如果使用缓存不当,就会让我们的应用程序出现错误。
重现问题
我们还是来编写一个使用UpdatePanel的简单示例,如下:
我们打开页面,依次做一下操作,并察看页面上显示的时间。
- 多次刷新页面,时间不会改变。
- 多次点击Async PostBack按钮,页面部分刷新,时间每次都会改变。
- 多次点击PostBack按钮,页面完全刷新,时间只会更新一次,然后时间保持不变。
- 点击Async PostBack按钮,发生错误。
直到等待时间超过100秒(Cache过期),点击Async PostBack才工作正常,直到用户再次点击过PostBack按钮。