繁体   English   中英

如何使ASP.NET识别我的自定义服务器控件?

[英]How do I get ASP.NET to recognize my custom server control?

我正在尝试创建第一个从Panel派生的ASP.net服务器控件。 由于某种原因,即使应用程序识别出控件的类和命名空间,我也无法使.aspx页识别出服务器标记。

这是我使用的步骤:

1)我创建了一个CollapsablePanel类,并将其放置在site_code目录中。 我使用的是Web应用程序而不是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”%>

我已经建立了项目,但是自定义标签前缀没有出现。 如果我只是继续输入内容,则编辑器不会引发错误,但是在发布并尝试访问该页面时,页面会显示错误。 如果我尝试从背后的代码(导入MyApplication.webstation.WebControls)访问该类,则自定义控件将出现在智能感知中,因此我知道Visual Studio在某种程度上正在读取类信息。

我在这里做错了什么? 任何想法都将不胜感激。

麦克风

似乎您可能缺少TagName属性,因为

<%@ Register TagPrefix="webstation" TagName="CollapsiblePanel" Namespace="MyApplication.webstation.WebControls" %>

一旦您执行此操作,您应该可以按以下方式访问它

<webstations:CollapsiblePanel id='usercontrol1" runat="server" />

查阅Scott Gu的关于注册控件的博客文章,我喜欢自己在web.config文件中注册它们。 http://weblogs.asp.net/scottgu/archive/2006/11/26/tip-trick-how-to-register-user-controls-and-custom-controls-in-web-config.aspx

您需要确保对控件类有完全限定的引用,即库名和名称空间。 我将控件放置在类库中,但是您可以将它们包含在App_Code文件夹中。 您也可以在web.config中注册用户控件,这两个示例如下:

一旦我在相同的解决方案中创建了类库项目,构建了项目,从类库的bin中复制了DLL并将其放置在用于以下目的的Web项目的文件夹中,便能够按预期工作持有外部二进制文件。 我还在项目中添加了对.dll的引用。 一旦完成此操作,则语法如下:

<%@ Register Assembly="webstation.WebControls" Namespace="webstation.WebControls" TagPrefix="webstation" %>

开始工作。 有谁知道我是否能够以相同的解决方案从类库中自动更新Web项目中已编译的.DLL? 还是我每次都只需要进入bin文件夹并将其手动复制到Web项目中?

谢谢,

麦克风

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM