在不使用注册标记的情况下将用户控件动态加载到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" %>

此外,我无权修改网络配置。

对此有什么变通办法吗?

在不使用注册标记的情况下将用户控件动态加载到Web控件中

您可以在页面加载时动态加载它们,如下所示:

private const string UCFolderName = "~/Controls/";
...    
var usercontrolA= Page.LoadControl(UCFolderName + "UsercontrolA.ascx");
ServercontrolContainer.Controls.Add(UsercontrolA);

其中ServercontrolContainer.ascx文件中的一个元素