2010-11-07 68 views
0

我对asp.net应用程序中发生的事情有些困惑。通过Ajax更新WebControl rendercontents

页面上有一个控件,它每5秒钟执行一次ajax请求(使用UpdatePanel和Trigger)来循环显示一些图像。

我创建了一个从Twitter获取信息的WebControl,尽管没有成为UpdatePanel的一部分,但RenderContents似乎在每个AJAX调用中都被调用。

这是正常行为,还是我错过了什么?有没有办法解决它?

回答

1

无需任何代码就很难提供一个确切的答案,然而:

注意,整个页面生命周期的更新面板电话甚至被处决。基本上ASP.Net生成整个页面的标记,但只返回更新面板的部分。无论是在加载,prerender等事件的页面和它的任何控件将执行每个面板​​更新。

您可以通过检查ScriptManager.IsInAsyncPostBack的值来检查您是否正在进行正常页面加载或AJAX /更新面板加载。您可以将不想执行的代码封装在“不IsInAsyncPostBack”块中。我个人会避免使用更新面板,并使用纯AJAX调用来更新图像。

+0

谢谢,AuSteve。不幸的是,我正在使用一些现有的代码(我没有源代码 - 不要问),并添加一个新的控件。 – 2010-11-08 09:18:17

+0

您仍然可以将您的逻辑封装在“非IsInAsyncPostBack”块中,以便您的代码仅在整页加载时运行。 – AUSteve 2010-11-08 23:40:58