1

クラスと継承の間の関係についての基本的な知識が不足していることは知っています

簡単なことを理解するのは難しいと思います:

特定のDDl、またはTextBoxコード ビハインドからアクセスできる

int selected = DDLID.SelectedIndex ;

string userInput = TBXID.Text;

コードビハインドに配置されたクラスから:

public static class ControlsValue
{
   public static int UserSel = DDLID.Selected.index;
   public static string UserText = TBXID.Text;
} 

コードを「アレンジ」しようとしていたので、他のプロジェクトで再利用できるようになりました

...そのクラスのコードに関連するすべてのグローバル変数をクラスに移動しましたが、できないことは変数を割り当てることですwebControls Values

それを行う方法は何ですか?

アップデート

私が考えることができる方法は、パラメータを介することです

public static class ControlsValue
{
   public static void getValues(DropDownList DDLID)
   {
        public static int UserSel = DDLID.Selected.index;
   }
   public static string UserText(TextBox TBXID)
   {
      return TBXID.Text;
   }
} 
4

1 に答える 1

1

このような別のクラスを作成します

public class ControlValues{

    private int_dropDownIndex;
    public int DropDownIndex{
         get { return _dropDownIndex; }
         set { _dropDownIndex= value; }
    }

    private string _textBoxValue;
    public string TextBoxValue{
         get { return _textBoxValue; }
         set { _textBoxValue= value; }
    }

    public ControlValues(int dropDownIndex, string textBoxValue){
         this._dropDownIndex = dropDownIndex;
         this._textBoxValue = textBoxValue;
    }
}

以下のように、コードビハインドからインスタンスを作成できます

ControlValues cv= new ControlValues(DDLID.Selected.index, TBXID.Text);

これで、DropDown インデックスとテキストに次のようにアクセスできます。

cv.DropDownIndex;  
cv.TextBoxValue;

私はこれに対して答えを提供しましたが、注意してください:

  • Web アプリケーションのステートレスな性質と、これを使用する方法を覚えておいてください。
  • ASP.NET では、クラスのインスタンスを作成してサーバー コントロールの値を保持するのは効率的ではありません。これらのコントロールとその値はコード ビハインドから直接アクセスできるためです。このアプローチを使用すると、余分なオーバーヘッドが発生します。
  • 再利用性を真剣に学びたいのであれば、オブジェクト指向プログラミングの基礎を学ぶことを強くお勧めします。OOP をよく理解すると、OOP の原則を適用するタイミングが明確になります。
于 2012-10-24T21:40:43.850 に答える