我正在学习自定义控件,刚刚完成了我的第一个。问题是我正在努力在我的网络配置中注册它并让编译器识别它。现在,这会产生关于控件引用的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>
答案 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"/>