我想创建我的第一个从面板派生的ASP.net服务器控件。出于某种原因,即使应用程序能够识别我的控件的类和名称空间,我也无法使.aspx页面识别我的服务器标记。如何让ASP.NET识别我的自定义服务器控件?
下面是我使用的步骤:
1)我创造,我已经放在我的site_code目录类CollapsablePanel。我正在使用Web App而不是Web站点,因此App_Code对我来说真的不可用。
Namespace webstation.WebControls
Public Class CollapsablePanel
Inherits System.Web.UI.WebControls.Panel
End Class
End Namespace
2)在.aspx文件我已经添加<%@注册的TagPrefix = “webstation” 命名空间= “MyApplication.webstation.WebControls” %>
我已经建立了项目,但我自定义标签前缀不会出现。如果我只是继续并输入编辑器不会引发错误,但是当我发布它并尝试访问它时,页面会发生错误。如果我尝试从代码隐藏(Imports MyApplication.webstation.WebControls)访问类,则自定义控件将显示在intellisense中,所以我知道Visual Studio正在某种程度上读取类信息。
我在这里做错了什么?任何想法都不胜感激。
迈克
我不知道我应该有标记名,我想它来提供,我将在命名空间的所有类,而不必单独注册每一个。 另外,ASP.net上的教程视频不使用TagName: http://www.asp.net/learn/videos/video-297.aspx – mclark1129 2009-10-14 17:34:21
如果您想注册* all *的类在给定的命名空间中,我相信你需要在@Register指令中提供程序集属性。所以像Assembly =“MyApplication.webstation.WebControls”,假设WebControls是一个生成DLL作为输出的项目。 – 2009-10-14 17:51:34
你是对的MIke,你不需要指定标记名,但你需要指定程序集。我刚刚尝试过,它在我为我的dll添加程序集属性之后起作用 – 2009-10-14 17:58:29