使用web.config中的引用以编程方式加载UserControl
本文关键字:编程 方式 加载 UserControl 引用 web config 使用 | 更新日期: 2023-09-27 18:20:55
我在Web.config中注册用户控件,如下所示。如何将带有标记名标题的用户控件从代码后面动态加载到占位符中?我使用ASP.NET 4.0
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="blogUc" src="~/Controls/Header/Header.ascx" tagName="header"/>
</controls>
</pages>
</system.web>
</configuration>
这是一篇很好的文章如何以编程方式创建ASP.Net UserControls的实例。不要忘记在代码隐藏文件中放置对UserControl所在命名空间的引用。
// Reference to namespace in Code-Behind file
using MyNamespace.UserControls;
// In code behind class
protected MyUserControl userControl1 = null;
您可以通过编程从web.config中读取pages Section并加载您喜欢的控件。
参考:http://msdn.microsoft.com/en-us/library/system.web.configuration.tagprefixcollection.aspx
以下是可能对您有所帮助的代码。(注意-它在所有控件集合中循环,如果你有一长串控件,这可能是一个性能问题)
PagesSection pagesSection = (PagesSection)WebConfigurationManager.GetWebApplicationSection("system.web/pages");
foreach (TagPrefixInfo tag in pagesSection.Controls)
{
if (tag.TagName == "header")
{
UserControl userControl= (UserControl) Page.LoadControl(tag.Source);
PlaceHolder1.Controls.Add(userControl);
break;
}
}
调用TemplateControl.ParseControl
方法:
Control control = TemplateControl.ParseControl("<blogUc:header runat='server' />");
this.placeHolder.Controls.Add(control);