2012-03-17 34 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

相關問題