2012-03-17 56 views
1

我写了一个从WebControl继承的自定义控件。 (注意:不是用户控件)。必须将自定义控件放置在App_Code中吗?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI.WebControls; 

namespace Taopi.WebComponents 
{ 
    public class RatingLabel : WebControl 
    { 
     public RatingLabel() 
      : base("span") 
     {  } 
     //... 

我把它放在/App_Code,并在网页上它被注册和使用如下:

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

他们跑得很好,直到我谨RatingLabel到/Components,这是我涂蜡文件夹。当我尝试运行该网站时,出现错误“未知服务器标签uc:RatingLabel”。

我认为注册是错误的,所以需要进行哪些修改?必须将自定义控件放置在App_Code中吗?

我还有一个问题,你通常在哪里放置自定义控件(引用外部DLL除外)?有没有“建议”的地点?

回答

0

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

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

+0

感谢您的见解。由于我写的网站很小,创建另一个项目看起来太麻烦了。由于自定义控件必须放置在App_Code中,我认为最好创建至少两个文件夹/ App_Code/WebControls,这些文件夹会放置自定义控件,并说/ App_Code/Business,它放置代码隐藏所需的类。 – Gqqnbig 2012-03-17 16:28:44

+0

是的,这将保持整洁。但是,添加“类库”项目非常简单(文件/添加/新建项目 - 选择类库类型,然后从现有项目中添加对其的引用,然后您可以从其他网站中引用此项目。 – 2012-03-17 16:30:29

相关问题