2012-03-17 30 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でそれを配置し、Webページ上では、次のように登録して使用されます。

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

私は私がセレイテッド型のフォルダです/ComponentsにRatingLabelを移動するまで、彼らはうまく実行します。ウェブサイトを実行しようとすると、「不明なサーバータグuc:RatingLabel」というエラーが表示されます。

私は登録が間違っていると思いますので、変更が必要ですか?カスタムコントロールをApp_Codeに配置する必要がありますか?

私は別の質問があります。通常、カスタムコントロールはどこに配置しますか(外部DLLの参照を除く)? 「提案された」場所はありますか?

答えて

0

これまでに私はこの問題に遭遇しました。 AppCodeフォルダの外にコードを保存することができる唯一の方法は、「クラスライブラリ」プロジェクトまたは外部DLLを追加することです(これは、複数のプロジェクトにまたがって使用するように私の好みのアプローチです)。

また、「Webサイト」プロジェクトではなく「Webアプリケーション」プロジェクトタイプを使用すると、どこにでもコードを格納できます。

+0

あなたの洞察をお寄せいただきありがとうございます。私が書いているウェブサイトは小さいので、別のプロジェクトを作成するのはあまりに面倒です。カスタムコントロールをApp_Codeに配置する必要があるので、少なくとも2つのフォルダ/ App_Code/WebControlsを作成して、カスタムコントロールを配置し、コードビハインドで必要なクラスを配置する/ App_Code/Businessを作成することをお勧めします。 – Gqqnbig

+0

はい、それはそれをより細かく保つでしょう。しかし、「クラスライブラリ」プロジェクトを追加するのは非常に簡単です(ファイル/追加/新規プロジェクト - クラスライブラリタイプを選択し、既存のプロジェクトから参照を追加すると、このプロジェクトを他のWebサイトからも参照できます)。 –

関連する問題