开发人员通过在页面的顶部添加 <%@ Register %> 指令来引入和使用自定义服务器控件和用户控件时
<%@ Register TagName="Pager" TagPrefix="ucl" Src="~/UserControl/Pager.ascx"%>
假使现在用户控件ListShow 需引用同一目录下的Pager.ascx控件 通过在 web.config 文件中声明的用
户自定义控件不能直接被同一目录的用户自定义控件引用
如ListShow需引用同目录下的Pager控件的话
需在ListShow控件头部先注册 <%@ Register TagName="Pager" TagPrefix="ucl" Src="~/UserControl/Pager.ascx"%>
在web.config文件配置了用户控件
<pages>
<controls>
<add tagPrefix="WUC" tagName="PageList" src="~/hl/account/pagelist.ascx" />
</controls>
</pages>
aspx调用用户控件的时候出错:
<WUC:PageLIst ID="FenYe" runat="server" />
报错信息:
页“/hl/account/accountlist.aspx”无法使用用户控件“/hl/account/LogTop.ascx”,因为此控件已在 web.config 中注册并且与该页位于同一个目录中。
这是是什么原因呢?
原因如下:
通过 pages.controls.add 注册的 UserControl,如果和该用户控件在同一级目录aspx文件引用此用户控件的,仍然要是使用 Regisert 指令在aspx页面中对此控件进行注册,否则 ASP.NET 就无法解析了,
解决方案:
1.在aspx页面通过Regiset指令再次注册改用户控件
2.给用户控件新建目录 UserControls/ 避免用户控件和需要引用该用户控件的aspx在同一级目录。
附上在web.config文件注册用户自定义控件的方法
ASP.NET 2.0 使得控件声明极其干净而且管理起来极其容易。不用在你的页面上重复这些声明,只要在你的应用的web.config 文件的新的 pages->controls 部分声明一次即可:
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="scottgu" src="~/Controls/Header.ascx" tagName="header"/>
<add tagPrefix="scottgu" src="~/Controls/Footer.ascx" tagName="footer"/>
<add tagPrefix="ControlVendor" assembly="ControlVendorAssembly"/>
</controls>
</pages>
</system.web>
</configuration>