什么是不在页面加载上加载用户控件的最佳方法

时间:2012-01-31 15:40:40

标签: asp.net user-controls

我有一个普遍的问题。我的页面有几个安静的'重'UserControls,每个都放在一个MultiView View中。在PageLoad上,每个控件都会初始化,从而导致不必要的数据库调用。我想要的是只加载其View设置为'Active'的控件。现在我在每个用户控件中使用公共布尔属性来设置是否绑定数据,但是有一个常用的方法吗?

2 个答案:

答案 0 :(得分:0)

我就是这样做的(类似于你的解决方案)

每个控件都实现了一种数据绑定方法。只有在显示的视图为“活动”时才应调用此方法。 (就像你已经在服务器端做的那样)。 每个控件只包含一个Literal,我从代码隐藏中渲染我的HTML。

我也希望有更清洁的方式,但控件的OnLoad等等方法被调用,即使它们是不可见的。据我所知,您必须执行这样的数据绑定操作或手动设置属性的值。

您不应该重写DataBind方法,因为即使控件本身的Visible属性设置为false,也会调用它。 (这就是我记得的,但你可以检查一下以确保)。更干净的方法可能是在覆盖的DataBind方法中检查您的属性,并且只有在设置为true时才执行数据绑定。

答案 1 :(得分:0)

如果您真的不希望每个加载/回发都UserControls中涉及{{1}},那么在需要时动态加载它们。

ASP.NET Page Life Cycle