注册复合控件

时间:2010-12-13 18:55:02

标签: asp.net

我正在学习自定义控件,刚刚完成了我的第一个。问题是我正在努力在我的网络配置中注册它并让编译器识别它。现在,这会产生关于控件引用的YSOD。

注意:确切错误 - 错误未知服务器标记'cc:LblTextBox'。

谢谢!

Web Config

//..
//..
     <pages>
       <controls>
         <add tagPrefix="cc" namespace="Controls.Server"/>
       </controls>
     </pages>
</system.web>

控制代码隐藏

namespace Controls.Server
{
    public class LblTextBox : CompositeControl
    {
       //...
    }
}

加价

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ControlsMain.aspx.cs" Inherits="Pages_ControlsMain" Trace="true" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
     <title>Controls Area</title>
 </head>
 <body>
    <form id="form1" runat="server">
    <div>
          First attempt at a simple composite control <br />
         <cc:LblTextBox ID="ccLblTbHybrid" runat="server" LabelText="Name:" />
   </div>
   </form>
 </body>

2 个答案:

答案 0 :(得分:1)

尝试在页面顶部注册复合控件:

<%@ Register cc="myControls" Namespace="Controls.Server" %>

您也可以尝试在web.config中指定程序集:

<add tagPrefix="cc" namespace="Controls.Server" assembly="whatever"/>

答案 1 :(得分:0)

问题源于将项目设置为ASP.Net网站

这有一个缺点,因为程序集的名称直到运行时才知道。

我将项目重新创建为ASP.Net Web应用程序,允许对DLL进行预编译....从而使我能够为项目命名空间。

然后我将abe的建议添加到条目中,现在一切正在进行中

<add tagPrefix="cc" namespace="Controls.Server" assembly="DevLore"/>