Asp.net 必须在应用程序代码中放置自定义控件吗?

Asp.net 必须在应用程序代码中放置自定义控件吗?,asp.net,custom-controls,Asp.net,Custom Controls,我编写了一个从WebControl继承的自定义控件。(注意:不是用户控件) 我将其放置在/App\u code中,并在网页上注册和使用,如下所示: <%@ Register TagPrefix="uc" Namespace="Taopi.WebComponents" %> ... <uc:RatingLabel Rating='<%# Eval("rating") %>' runat="server" /> ... 它们运行良好,直到我将RatingLa

我编写了一个从WebControl继承的自定义控件。(注意:不是用户控件)

我将其放置在
/App\u code
中,并在网页上注册和使用,如下所示:

<%@ Register TagPrefix="uc" Namespace="Taopi.WebComponents" %>
...
<uc:RatingLabel Rating='<%# Eval("rating") %>' runat="server" />

...
它们运行良好,直到我将RatingLabel移动到
/Components
,这是我设置的文件夹。当我尝试运行该网站时,我在说“未知服务器标签uc:RatingLabel”时出错

我相信注册是错误的,那么需要修改什么呢?必须在应用程序代码中放置自定义控件吗


我还有一个问题,你通常把你的自定义控件放在哪里(除了引用外部DLL)?有什么“建议”的位置吗?

我以前遇到过。我发现您可以将代码存储在AppCode文件夹之外的唯一方法是按照您的建议添加“类库”项目或外部DLL(这是我的首选方法,因为它提供了跨多个项目的使用)


或者,如果您使用“Web应用程序”项目类型而不是“Web站点”项目,则可以将代码存储在任何位置。

感谢您的见解。由于我写的网站很小,创建另一个项目看起来太费力了。由于自定义控件必须放在App_代码中,我认为最好至少创建两个文件夹/App_代码/WebControls,用于放置自定义控件,比如/App_代码/Business,用于放置代码隐藏所需的类。是的,这样可以使它更整洁。但是,添加“类库”项目非常简单(File/Add/newproject——选择类库类型,然后从现有项目中添加对它的引用。然后,您也可以从其他网站引用此项目。
<%@ Register TagPrefix="uc" Namespace="Taopi.WebComponents" %>
...
<uc:RatingLabel Rating='<%# Eval("rating") %>' runat="server" />