ASP.NET服务器控制错误:未知服务器标记
问题描述:
这是我第一次尝试构建ASP.NET服务器控件。编写控制代码很简单,但我遇到了试图在网页上获取控件的路障。ASP.NET服务器控制错误:未知服务器标记
我在一个项目中构建控件并在另一个项目中引用它。在第二个项目中,我将控件放到工具箱中,并将控件拖放到页面上。我可以编译web项目没有错误,但是当我浏览网页我得到这个错误:
Parser Error Message: Unknown server tag 'cc1:StandardControl1'.
做一些环顾四周我看到有别人这个问题,因为各种原因,但没有一个似乎适用于我的情况。一个解决方案是集添加到寄存器的标签,但是这不是我的第一个问题:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="another.aspx.vb" Inherits="Educate.another" %>
<%@ Register Assembly="ServerControlSandbox" Namespace="ServerControlSandbox" TagPrefix="cc1" %>
<!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></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:StandardControl1 runat="server">
</cc1:StandardControl1>
</div>
</form>
</body>
</html>
另一种解决方案据说它与组件属性添加到web.config中,再次。但随着这在我的web.config我仍然得到错误:
<controls>
<add tagPrefix="cc1" namespace="ServerControlSandbox" assembly="ServerControlSandbox"/>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</controls>
我想有一些简单的我失踪,但我认为没有错,被我看的例子来看。有没有人有任何想法?谢谢。
而且,这里是控制代码:
namespace ServerControlSandbox
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:StandardControl1 runat=server></{0}:StandardControl1>")]
public class StandardControl : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
string block = "<p>Here is some text.</p>";
output.Write(block);
}
}
}
答
它应该仅仅是:
<cc1:StandardControl ID="scSomething" runat="server">
</cc1:StandardControl>
+1是;在命名空间ServerControlSandbox中没有控制权,类名为StandardControl1 - 这就是解析器的工作方式 - 它在所提供的命名空间中指定的程序集中的cc1:前缀后面查找类名 - 我敢打赌,IDE由于某种原因。 – dash 2011-12-16 22:42:48