在不使用注册标记的情况下将用户控件动态加载到Web控件中
本文关键字:控件 动态 用户 加载 Web 情况下 注册 | 更新日期: 2023-09-27 18:28:24
我正在使用一个接受服务器控件集合的容器。服务器控件接受用户控件的集合。
<Container>
<Servercontrol>
<UsercontrolA/>
<UsercontrolB/>
<UsercontrolC/>
<UsercontrolD/>
</Servercontrol>
<Servercontrol>
<UsercontrolE/>
</Servercontrol>
</Container>
这将基本呈现为一个表中的两列,包括一个标题行和一个正文行。左列的正文行将有4个用户控件,右侧将有1个。
问题是,我希望程序员能够将任何用户控件添加到这个容器中。。。。但是,除非用户控件添加了适当的寄存器标记,否则不会呈现这些控件。
<%@ Register TagPrefix="C" TagName="A" Src="~/Controls/UsercontrolA.ascx" %>
<%@ Register TagPrefix="C" TagName="B" Src="~/Controls/UsercontrolB.ascx" %>
<%@ Register TagPrefix="C" TagName="C" Src="~/Controls/UsercontrolC.ascx" %>
<%@ Register TagPrefix="C" TagName="D" Src="~/Controls/UsercontrolD.ascx" %>
<%@ Register TagPrefix="C" TagName="E" Src="~/Controls/UsercontrolE.ascx" %>
此外,我无权修改网络配置。
对此有什么变通办法吗?
您可以在页面加载时动态加载它们,如下所示:
private const string UCFolderName = "~/Controls/";
...
var usercontrolA= Page.LoadControl(UCFolderName + "UsercontrolA.ascx");
ServercontrolContainer.Controls.Add(UsercontrolA);
其中ServercontrolContainer
是.ascx
文件中的一个元素