ASP.NET C中的自定义控件#
我创建了一个简单的自定义控件,它只继承ASP.NET C中的自定义控件#,asp.net,custom-controls,parse-error,extending-classes,Asp.net,Custom Controls,Parse Error,Extending Classes,我创建了一个简单的自定义控件,它只继承Literal控件,并且没有任何扩展,因为代码是空的 命名空间:自定义控件 类名:Literal:System.Web.UI.WebControls.Literal 接下来我要做的是在aspx页面中注册此控件,如下所示: <%@ Register TagPrefix="web" Namespace="CustomControls" %> (我在一些教程中读到,除了web.config等,这是注册它的方法之一。) 毕竟,对我来说没有智能,更糟
Literal
控件,并且没有任何扩展,因为代码是空的
命名空间:自定义控件
类名:Literal:System.Web.UI.WebControls.Literal
接下来我要做的是在aspx
页面中注册此控件,如下所示:
<%@ Register TagPrefix="web" Namespace="CustomControls" %>
(我在一些教程中读到,除了web.config等,这是注册它的方法之一。)
毕竟,对我来说没有智能,更糟糕的是,当我尝试运行包含控件的页面时,我会遇到一个解析错误“unknown server tag:web”
我使用了“创建新项目”而不是新网站,以防需要这些信息
我有什么问题
提前感谢。如果您想在其他页面上使用控件,也可以在web.config中注册它
<pages>
<controls>
<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"/>
<add tagPrefix="web" namespace="MyProject.CustomControls" assembly="MyProject" />
</controls>
</pages>
对于web站点,这将起作用
<add tagPrefix ="web" namespace="ASP.App_Code.CustomControls" />
以下是我是如何做到这一点的,从无到有,一步一步来。第一种方法使用第二个项目/程序集。对于应用程序代码版本,向下滚动 Web应用程序项目方法
namespace CustomControls
{
public class Literal : System.Web.UI.WebControls.Literal
{
}
}
namespace CustomControls
{
public class Literal : System.Web.UI.WebControls.Literal
{
}
}
namespace CustomControls
{
public class Literal2 : System.Web.UI.WebControls.Literal
{
}
}
我使用visual studio对此进行了测试,结果一切正常。问题在于您的
标记:它缺少程序集名称
它必须成为
。如果您在查找类的程序集名称时遇到困难,以下是一些提示:
ASP.App_Code
应该可以工作否则请给我们一些关于项目布局的信息 最简单的方法是将Literal.ascx拖放到页面上(如果该页面在同一个解决方案中)。如果该页面是另一个解决方案,则可以将该控件添加到VS工具箱中,并将该控件拖放到该页面上。您忘记了src属性
<%@ Register TagPrefix="web" Namespace="CustomControls" Src="PathToYourCustomControl" %>
感谢您的回复,问题是-我还没有任何程序集文件,据我所知,控件只能通过tagprefix和名称空间注册,即使没有程序集。我说的对吗?如果您已经创建了一个web应用程序项目,您将拥有一个程序集,请参见:您所说的“创建新项目”到底是什么意思?文件->新建->项目->。。。(至少在VS2005)然后,你说了什么?这可能很重要(例如,您是否选择了其他语言->Visual C->Web->其他语言?)。你确实需要在某一点上组装;问题是你是否必须明确地命名它(我认为如果你没有使用“网站”项目,因为你没有App_代码文件夹,那么你必须这么做)。你的自定义控件类存在于哪里?它是网站项目中的类文件还是它自己的项目中的类文件?那么你有两个项目,一个是“CustomControls”,另一个是web项目?@scherand:我想他的意思是他是作为web应用程序项目而不是网站项目来做的。这两者的行为有点不同。问题发生在VS2008中的WebApplicationProject中。谢谢。即使指定程序集名称也不能解决VS2008中WebApplicationProject的问题。感谢您提供的详细信息,这在web站点项目中非常有效。问题在于VS2008中的WebApplicationProject。@Mahes-我已更新了答案,以包括Web应用程序说明(位于顶部)。@Mahes-如果我发布的代码不适用于您,请告诉我。