aspx页面上的多个用户控件

时间:2009-05-06 22:38:06

标签: c# .net asp.net

我有一个动态加载页面上多个用户控件的页面。我在每个用户控件上都有一些按钮,这些按钮会导致服务器端事件执行与触发操作的用户控件相关的某些处理。

我遇到的问题是,这个按钮单击会导致整个页面重新加载(因为所有动态加载的控件都需要在每次回发时重新加载),因为所有用户控件都会使页面变慢。

当用户与其中一个用户控件交互时,有没有办法告诉.NET忽略其他用户控件?

所有用户控件都在updatepanel中,模式设置为条件。

3 个答案:

答案 0 :(得分:3)

删除更新面板并切换到使用jquery和JSON。

您可以更多地关注代码,并且应该能够放弃所有控件加载垃圾。

基本问题是更新面板仍然需要执行整页才能发回所需的一小部分数据。通过结合页面方法或Web服务方法转向jquery,您的页面不必为每个“面板”更新重新构建。

答案 1 :(得分:0)

专门回答你的问题。没有。没有办法“告诉.NET忽略其他用户控件”。当然,您可以告诉您的应用程序忽略一些事情。也许你遗漏了一些if (!Page.IsPostBack) {}陈述?

答案 2 :(得分:0)

您应该能够在您提到的方案中使用UpdatePanels。必须有一些特定于您的实现的内容导致整个页面刷新。我建议将其剥离以隔离问题。我创建了以下示例,它按预期工作...只刷新了触发的UpdatePanel:

  • 制作两个用户控件,在每个页面加载时在Label中显示新的GUID。
  • 创建了一个包含两个UpdatePanel的测试页面。每个UpdatePanel都有一个空的PlaceHolder控件和一个触发异步回发的按钮。
  • 在测试页面的Page_Init中,使用LoadControl创建用户控件的实例,并将它们添加到相应的PlaceHolder(ph.Controls.Add())。

当我单击UpdatePanel内的任一按钮时,只有该面板刷新(即使在每个异步回发上调用两次LoadControl以重新创建控件层次结构)。