将用户控件动态加载到没有注册标记的Web控件中

时间:2013-08-20 13:48:16

标签: c# .net user-controls

我正在使用一个接受服务器控件集合的容器。服务器控件接受一组用户控件。

<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" %>

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

这有什么解决方法吗?

1 个答案:

答案 0 :(得分:2)

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

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

ServercontrolContainer.Controls.Add(UsercontrolA);

其中ServercontrolContainer.ascx文件中的元素