开发人员通过在页面的顶部添加 <%@ 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 部分声明一次即可:

 

<?xml version="1.0"?> 

 

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

posted on 2010-12-15 19:04  露水丛生  阅读(1173)  评论(0编辑  收藏  举报