测试你前世怎么死的
上文介绍了有关创建复合控件的一些基本知识,下面将通过一个典型应用加深读者对于复合控件实现方法的理解,其重点放在针对复合控件的呈现方法上。
多数控件呈现通过重写Render方法实现,然而,在复合控件中则大有不同。复合控件由多个子控件组合而成,其呈现逻辑是由子控件提供的。
据此,在少数较为简单的情况下,复合控件不用重写Render方法,例如,创建一个包含文本框和按钮的复合控件,这时,只要通过类撰写的方法在CreateChildControls中添加相关控件即可,而无需Render方法。但是,在多数情况下,复合控件中既包含子控件,又包含用于格式化和布局的HTML。
针对这种情况,如果只采取类撰写的实现方法,那么很容易造成错误,并且生成的复合控件性能受到很大影响。最好的解决方法是重写CreateChildControls方法,同时也重写Render方法。在CreateChildControls方法中,为复合控件添加子控件;在Render方法中,为HTTP输出流添加用于格式化和布局的HTML。
· 重写CreateChildControls方法,完成实例化、初始化子控件,并且将子控件添加到控件集合中。
· 如果复合控件中存在用于格式化和布局的HTML,那么将这些内容写入Render方法中,而不要在CreateChildControls方法中创建和添加所需的LiteralControl实例。另外,在添加相关HTML代码过程中,为了让子控件使用默认生成方法,必须使每个子控件调用RenderControl方法。
为了便于读者更好的理解以上内容,下面举例说明。在此示例中,Register控件使用子控件创建用户界面(UI),用于输入用户信息,以向网站注册。此用户界面包括两个TextBox控件(一个用于输入用户名,另一个用于输入用户的电子邮件地址)和一个用于提交信息的Button控件。Register还将RequiredFieldValidator控件与两个TextBox控件关联起来,以确保用户输入了名称和电子邮件地址。复合控件Register源代码如下所示:
以上列举了复合控件类Register的源代码。虽然代码有些冗长,然而还是比较容易理解的。下图1列举了Register类结构图。
本文由来源于325棋牌 325游戏中心唯一官方网站
网友评论 ()条 查看