0

こんにちは、asp.net の状態管理に関する問題が 1 つあります。3 つの値を単一のビューステートに保存したいのですが、単一に保存することは可能ですか、それとも 3 つのビューステート変数を使用しますか。

基本的な必要性は、 3 つの値を見つけるために gridview のrowcommandイベントを使用していることです。そして、これらの値をbutton_clickイベントで使用したかったのですが、直接は不可能なので、ビューステートを好みます。

これを行う他の方法があれば、投稿できます。私は .net 開発が初めてなので、あなたの知識を共有してください。

4

4 に答える 4

2

クラスを作成し、Serializable属性でマークすることができます。次に、そのクラスのリストインスタンスを作成し、ビューステートに1つのアイテムとして保存します。これは、保存する値がたくさんある場合です。しかし、あなたは私が思う単純なケースです:

[Serializable()]
class SomeData
{

    public string Value1 {get; set;}
    public string Value2 {get; set;}
    public string Value3 {get; set;}

}

ビューステートに追加:

ViewState.Add("myData", new SomeData () {Value1 = "A", 
    Value2 = "B", 
    Value2 = "3"});

ポストバック時にViewStateから取得し直します。

var data = (SomeData)ViewState["myData"];
Label1.Text = string.Format("{0}, {1}, {2}", 
    data.Value1, data.Value2, data.Value3);
于 2012-05-23T11:03:14.533 に答える
0

シナリオでは、ViewStateは必要ありません。rowcommandとbutton_clickの両方が同じポストバックで起動するため、コードビハインドの変数にそれらを格納できます。ポストバック全体で必要な場合にのみ、アイテムをViewStateに保存する必要があります。

于 2012-05-23T12:05:36.447 に答える
0

任意のセパレータを使用できます。例:

ViewState["items"] = item1 + "~" + item2 + "~" + item3

ViewStateから値を取得するには、値を「〜」で分割します。

于 2012-05-23T10:58:17.043 に答える
0

必要なセパレーターを使用できます。ただし、3つの別々の変数を使用すると、コードははるかにクリーンになります。

.netにビューステートを処理させます。1つの変数を使用することは、不必要な複雑さのように思われます。

于 2012-05-23T11:02:33.767 に答える