2

以下のコードがあり、lnkSave_Click 関数で「テキスト」文字列にアクセスしようとしていますが、lnkSave_Click 関数からテキストにアクセスできないようです。常に空のようです。

private string _text = "";
    public string text
    {
        get { return _text; }
        set { _text = value; }
    }


protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
             text = "Hello World!";
            }
        }

protected void lnkSave_Click(object sender, EventArgs e)
        {
            if (text == "Hello World!")
            {
            ... do things..
            }
        }
4

1 に答える 1

6

空の場合アクセス可能です。常に空である理由は、それがフィールドだからです。ASP.NET ページ内のすべてのオブジェクトは、ライフサイクルの最後に破棄されます。したがって、""ポストバックごとに初期化されます。

ViewState を使用して値を永続化できます。

public string text
{
    get { if(ViewState["text"]==null)ViewState["text"]=""; return (String)ViewState["text"]; }
    set { ViewState["text"] = value; }
}

ASP.NET アプリケーションで永続的なユーザー状態を管理するための 9 つのオプション

于 2013-02-10T20:59:17.810 に答える