我正在使用一个接受服务器控件集合的容器。服务器控件接受一组用户控件。
<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" %>
此外,我无权修改网络配置。
这有什么解决方法吗?
答案 0 :(得分:2)
你可以在页面加载时动态加载它们,如下所示:
private const string UCFolderName = "~/Controls/";
...
var usercontrolA= Page.LoadControl(UCFolderName + "UsercontrolA.ascx");
ServercontrolContainer.Controls.Add(UsercontrolA);
其中ServercontrolContainer
是.ascx
文件中的元素