0

部分クラス _Default の変数は、以下のコードで説明されているように、関数呼び出しでリセットされます。ただし、プロパティを静的としてマークすると、それらの値は保持されます。

私の質問は、なぜこれが起こるのですか?各関数呼び出しはページ クラスの同じインスタンスを使用していませんか?

public partial class _Default : System.Web.UI.Page
{
    public double ValueToConvert { get; set; }
    public double ConvertedValue { get; set; }

    protected void Page_Load(object sender, EventArgs e){}

    protected void btnUC_Click(object sender, EventArgs e)
    {
        //In this method, the non-static properties ValueToConvert and ConvertedValue
        //get reset. But why?
    }

}
4

2 に答える 2

2

各関数呼び出しはページクラスの同じインスタンスを使用しませんか?

リクエストは、クラスの新しいインスタンスを作成します。一体、それらは異なるプロセスまたは異なるマシン上にある可能性があります。同じインスタンスを使用する同じリクエスト内に複数のメソッド呼び出しがあるが、そうでない場合は、状態がどのように伝播されるかを理解する必要があります。クライアント(ビューステート)を介して伝播することも、サーバー側のどこかに(データベースなどに)保存することもできます。

于 2012-09-22T08:34:54.610 に答える
0

この問題は、hiddenfieldsを使用して、次のようなプロパティでラップすることで解決できます。

public partial class _Default : System.Web.UI.Page
{
    public double ValueToConvert \
    { 
       get{
           return hfValueToConvert.Value;  
       }
       set{
           hfValueToConvert.Value = this.value.ToString();
       }
    }

    public double ConvertedValue
    { 
       get{
           return hfConvertedValue.Value;  
       }
       set{
           hfConvertedValue.Value = this.value.ToString();
       }
    }

    protected void Page_Load(object sender, EventArgs e){}

    protected void btnUC_Click(object sender, EventArgs e)
    {
        //In this method, the non-static properties ValueToConvert and ConvertedValue
        //get reset. But why?
    }

}

次に、2つのHiddenFieldコントロール名hfValueToConverthfConvertedValueをaspxページに追加します。

于 2012-09-22T09:03:15.247 に答える