2011-12-14 2 views
2

私はSystem.Web.UI.UserControlから継承した抽象的なUserControlBaseクラスを持っています。 私はそれが抽象基本クラスだから、それはマークアップのないクラスだけです。ASP.NET - 親の抽象的なusercontrolではコントロールを定義しますが、子どものマークアップにはコントロールを定義しますか?

この抽象基本クラスでTextBox、DropDownListsなどのコントロールを何とか定義できますが、それらをメソッドで使用しますが、UserControlBaseから継承した子のusercontrolでマークアップを定義しますか?

擬似コード:

abstract UserControlBase : System.Web.UI.UserControl 
{ 
    private TextBox txt1; 
    private DropDownList ddl1; 

    private void test() 
    { 
      txt1.Text = "test"; 
      ddl1.SelectedIndex = 0; 
    } 
} 

MyUserControl : UserControlBase 
(markup): 

<asp:TextBox ID="txt1" runat="server" /> 
<asp:DropDownList ID="ddl1" runat="server" /> 

ありがとうございました。

答えて

2

だけで、基本クラスの保護ではなく、プライベートでコントロールを行います。

protected TextBox txt1; 
protected DropDownList ddl1; 

また、私はあなたのUserControlBaseは、単純なクラス(シングル* .csファイルのファイル、ノーマークアップ)であることを示唆しています。

+0

ああ、はい、私のせいです。彼らはプライベートではなく、保護されるべきです。 UserControlBaseは単純なクラス(.cs)です。 私が扱っているのは、マークアップ内のコントロールがMyUserControl.designer.csクラス内に独自の定義を作成するため、親基本クラスで定義されたコントロールをマークアップ内のコントロールと結合する方法です。手で削除することもできますが、MyUserControlのマークアップを更新するたびにそれを行う必要はありません。 –

+2

ここでは、MyUserControlがUserControlBaseで定義されたコントロールの独自の定義を作成しないようにするための手順を示します。1.新しいユーザーコントロールを作成します。 2. * .csファイルで、親をUserControlからUserControlBaseに変更します。 3.新しいTextBoxをそのマークアップに追加し、そのIDをtxt1に設定します。 4. * .designer.csを保存/ビルドして調べる - txt1の定義は含まれません。 – mayor

+0

ありがとう、素晴らしい! –

関連する問題