【发布时间】:2008-10-21 14:08:49
【问题描述】:
我们小组开发的一个 Web 应用程序使用 ASP.NET 向导控件。向导中的每个步骤都包含一个相应的自定义 UserControl。
问题在于,当您完成向导步骤时,所有 UserControls 会在每个步骤中加载,而不仅仅是在该步骤中使用的那个。这对我来说似乎不对。
那么...这里有没有人对向导控件做了很多工作,并且可以就如何正确使用它提供一些指导,并防止它在每个步骤中加载太多垃圾?
【问题讨论】:
我们小组开发的一个 Web 应用程序使用 ASP.NET 向导控件。向导中的每个步骤都包含一个相应的自定义 UserControl。
问题在于,当您完成向导步骤时,所有 UserControls 会在每个步骤中加载,而不仅仅是在该步骤中使用的那个。这对我来说似乎不对。
那么...这里有没有人对向导控件做了很多工作,并且可以就如何正确使用它提供一些指导,并防止它在每个步骤中加载太多垃圾?
【问题讨论】:
可以帮助您一点的事情是不要将任何代码放入您的 UserControls 的 Page_Load 函数中,而是将相同的代码放入它的 Page_PreRender 中。这在使用 MultiView 时至关重要,并且可能也适用于向导。
【讨论】:
mspmsp 对 PreRender 有一个很好的建议,我注意到之前使用的另一个选项是将控件内的所有配置代码简单地移动到 ConfigureControl 方法。
然后在切换视图时,您可以调用 ConfigureControl() 方法来显式创建/加载您的控件。它具有相同的目的,但在我看来,它有助于使代码更容易理解。
【讨论】:
仅供参考,(至少部分)它在每个步骤上加载所有用户控件的原因是,您可以访问在其他步骤中输入的值。如果它没有加载控件,您将无法根据上一步中输入的内容轻松地对当前步骤做出决定(例如,根据上一步中的选择过滤列表)。
【讨论】: