1

C#では、テキストボックスを変数としてクラスに送信せずに、ページから直接アクセスしたいと思います。

ファイルclass.csコード

public class A {
    private string dosomething {
        string text;
        text = textbox1.text; 
        // textbox1 exists in, for example, default.aspx, and I need it's 
        // value in the class after some event occurred - let's say there 
        // is button and it was clicked 
    return text;
    }
}

default.aspx.csコード

protected void Button1_Click(object sender, EventArgs e) {
    A a = new A(); 
    // I need when this button clicked to fill the variable within
    // the class with the data given from the textbox within this page
}

これは私が思いついたものですが、ゲッターとセッターを次のように使用して正しい道を進んでいるかどうかはわかりません。

private TextBox TextBox1 = new TextBox();
public string  settext {
    get { return TextBox1.Text; }
    set { TextBox1.Text = value;}
}

しかし、私はいつもNullReferenceException was unhandledメッセージを受け取ります。

4

2 に答える 2

3

コンストラクターに追加します

A a = new A(this.TextBox1.Text);

public class A
{
    private String _Text;

    public A(String text){

       this._Text = text;
    }

}

プライベート_Text変数には、クラスからのみ内部的にアクセスできますが、publicプロパティに変更すると、インスタンスの作成後にアクセスできます。

A a = new A(this.TextBox1.Text);
String text = a._Text;

これに加えて、それがパブリック変数である場合は、インスタンスを作成して_Textを設定するだけで、public A(String text)コンストラクターは必要ありません。

A a = new A();
a._Text = this.TextBox1.Text;
String seeIfSet = a._Text;
于 2012-12-05T17:29:34.980 に答える
0

私は探しているものを見つけました、そしてそれは私がしたように私が置く魅力のように働いています、そして記事へのリンクは私がそれを解決する方法を理解するのを助けました http://codebetter.com/jefferypalermo/2004/09/01 / asp-net-2-0-master-pages-changes-the-pages-control-hierarchy-level-300 / マスターページを使用する場合マスターページなしの場合と同じアイデア私の場合はマスターページを使用していて、テストしました正常に動作している場合と動作していない場合の両方で

    private TextBox  gettextbox ( )
    {

        //without master page
           /*System.Web.UI.Page Default = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
             TextBox TextBox1 = (TextBox)Default[0].FindControl("TextBox1");*/

        //with master page
       System.Web.UI.Page Default = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
   ContentPlaceHolder cph = Default.Controls[0].FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
           TextBox Textbox1 = (TextBox)cph.FindControl("TextBox1");
           return Textbox1;
    }
于 2012-12-06T11:45:55.817 に答える