好吧,我应该在哪里创建动态控件

时间:2010-12-21 14:39:48

标签: c# asp.net dynamic-controls

我刚刚开始讨论有关动态控制的两个问题,答案几乎总是关于在回发时重新创建,问题是这里的正确位置

以下是两个SO问题

question one

question 2

我们总是通过覆盖CreateChildControls

来创建动态控件

在反射器中查看了很多控件,主要是telerik控件,我一直认为这是正确的,但是很多人说它们应该在Init中创建。

我应该继续使用CreateChildControls还是Init正确的方法... 为什么这似乎是一个混乱的领域..

2 个答案:

答案 0 :(得分:3)

事实上,他们都完成了同样的事情。如果你正在为你的组织开发控件,那么把它放在init中就可以了(因为它会工作,即使它“技术上应该是它应该的位置”,但MS已经创建了一个他们期望它去的方法。

如果你就像一个Telerik,你正在创建其他人将使用的控件,那么我肯定会把它放在CreateChildControls类中。为什么?因为,这就是人们所期望的,这就是MS希望控制开发人员做的事情。在这种情况下你需要关注的是什么(特别是如果你开发的控件没有密封),有人可以覆盖不同的方法,就像你看到很多人覆盖init类到使他们的代码按照他们想要的方式工作。你总是希望避免你的代码神秘地无法工作的情况,因为他们忘了调用基本方法,而且没有记录。当你把它放在CreateChildControls方法中时,你告诉其他开发人员的是:“我可能正在做一些你想要注意的创建控件。”如果我覆盖它,我会一直认为对该方法的基础进行分类。

将它放在CreateChildControls中的另一个好处是很多人可能不知道它(以及做过的人,知道它用于什么)。因此,当他们从你的控件继承并使用Init并且忘记调用基本Init方法时,你的代码仍然“神奇地”工作,并且他们不必大惊小怪搞清楚错。

答案 1 :(得分:0)

为此页添加书签!

ASP.NET页面生命周期概述 http://msdn.microsoft.com/en-us/library/ms178472.aspx