ASP.NET - 在Page_Pre_init()或Page_Init()或Page_Load()中创建的动态控件

时间:2010-10-25 18:56:18

标签: .net asp.net dynamic

在ASP.NET中创建动态控件的最佳位置在哪里? MSDN说Pre_init,另一个MSDN article说Init,some people说Load事件(我读的不好)。

我正在攻读MS认证,我想确保知道哪一个是理想的,为什么。我最初的想法是在pre_init中创建对象并在Load事件中分配任何属性值(以便为动态控件加载ViewState)。

2 个答案:

答案 0 :(得分:4)

我推荐Page_Init()。这将绕过ViewState不一致加载的问题。控件可以访问,但viewstate尚未应用于它们。这正是您希望根据第二篇文章添加控件的位置。

另外,根据经验,这是有效的。其他任何方法都给我带来了问题。

答案 1 :(得分:4)

这取决于但我认为普遍的共识是越早越好。因此,如果要向页面添加动态控件,则可以在Pre_Init阶段添加它们。如果要向用户控件添加自定义控件,则可以在Init阶段添加它们(控件没有Pre_Init)。

有些情况下,您无法尽早添加它们。

  1. 添加控件 对某些用户输入的响应(例如 按钮单击)。
  2. 您需要根据所在页面的状态加载特定控件。在这种情况下,您可能必须等到包含控件的load事件,以确定是否需要加载控件。
  3. 作为一般经验法则,请尽快添加它们。