我有一个普遍的问题。我的页面有几个安静的'重'UserControls,每个都放在一个MultiView View中。在PageLoad上,每个控件都会初始化,从而导致不必要的数据库调用。我想要的是只加载其View设置为'Active'的控件。现在我在每个用户控件中使用公共布尔属性来设置是否绑定数据,但是有一个常用的方法吗?
答案 0 :(得分:0)
我就是这样做的(类似于你的解决方案)
每个控件都实现了一种数据绑定方法。只有在显示的视图为“活动”时才应调用此方法。 (就像你已经在服务器端做的那样)。 每个控件只包含一个Literal,我从代码隐藏中渲染我的HTML。
我也希望有更清洁的方式,但控件的OnLoad等等方法被调用,即使它们是不可见的。据我所知,您必须执行这样的数据绑定操作或手动设置属性的值。
您不应该重写DataBind方法,因为即使控件本身的Visible属性设置为false,也会调用它。 (这就是我记得的,但你可以检查一下以确保)。更干净的方法可能是在覆盖的DataBind方法中检查您的属性,并且只有在设置为true时才执行数据绑定。
答案 1 :(得分:0)
如果您真的不希望每个加载/回发都UserControls
中涉及{{1}},那么在需要时动态加载它们。