以编程方式在web.config中注册的代码隐藏中加载用户控件

gun*_*171 2 c# asp.net web-config

是否可以加载在web.config文件中注册的用户控件,而不是在aspx文件中?

这是我要做的一个例子.在我的aspx中:

的Index.aspx

<%@ Register TagPrefix="module" TagName="ModExample" Src="~/controls/example.ascx" %>
Run Code Online (Sandbox Code Playgroud)

index.cs

protected void Page_Load(object sender, EventArgs e)
{
    controls_example exmp = LoadContent("controls/example.ascx") as controls_example;
    myContentPanel.Controls.Add(exmp);
}
Run Code Online (Sandbox Code Playgroud)

我必须在页面中注册我的用户控件,否则ASP不会知道"controls_example"是什么.但是,我知道您可以将web.config更改为如下所示:

<configuration>
    <system.web>
        <pages>
            <controls>
                <add tagPrefix="module" tagName="ModExample" src="~/controls/contentModule.ascx"/>
                <add assembly="Subtext.Web.Controls" namespace="Subtext.Web.Controls" tagPrefix="module"/>
            </controls>
        </pages>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

所以,这是问题所在.如何在web.config文件中注册后创建"controls_example"类型的变量?

我需要:

  • 添加"使用命名空间"?
  • 在我的web.config中更改/添加内容?
  • 没有定义变量的数据类型是什么?(我很想避免这种情况)
  • 别的什么?

Cyb*_*ude 5

web.config看起来很好.在页面中,您需要添加一个using控件的命名空间.然后你可以使用页面的LoadControl方法来获取你的控件实例,然后你可以将它作为子控件添加到某个容器中(我通常会选择一个asp:Placeholder以确保它的位置在我想要的位置)