自定义控件,动态创建

时间:2009-08-10 20:50:01

标签: asp.net vb.net custom-controls

我已经在asp.net中创建了一个自定义控件,如果我把它拖到另一个网页上,它可以正常工作,但是我想动态地使用它,如

   Dim lCustomControl as new cldButton

但是我无法弄清楚如何执行此操作,编译器不会将cldButton识别为控件。我将在代码中将其添加到页面后面。我已将以下内容添加到web.config。

<controls>
        <add tagPrefix="cldButton" tagName="cldButton" src ="~/UserControls/customControlButton.ascx"/>

但它似乎与我的打字制作一样多的差异

由于

2 个答案:

答案 0 :(得分:2)

您需要使用Page.LoadControl方法而不是使用new来创建自定义控件。这是C#语法(对不起,我不是vb.net的人);它应该很容易转换:

Control customControl = Page.LoadControl("mycustomercontrol.ascx");
customControl.ID = "someID";
ICustomControl customControlType = (ICustomControl) customControl;

我使用网站,因此我必须为自定义控件创建一个界面并以这种方式进行管理。如果使用Web应用程序,则可以将customControl强制转换为控件的类型。

并且,在完成所有设置之后,您需要将控件添加到它的容器中(我通常使用PlaceHolder控件)。

答案 1 :(得分:1)

也许我误解了这个问题,但是如果你在谈论使用代码(而不是标记)来创建控件,则不需要在web.config文件中添加任何内容。

只需实例化控件的新实例,并在Page_Init期间将其添加到页面的Controls集合中。

Dim myControl As new cldButton

Page.Controls.Add(myControl)