0

私の Web アプリケーションには、値を保持する ViewState と Session の 2 つがあります。問題は、ボタンをクリックして一方をリセットし、もう一方をそのままにしておく必要があることです。ボタンで使用するResponse.Redirectと、ViewState と Session の両方がリセットされます。if(!IsPostBack) を使用してみましたが、これはボタン イベントでは機能しないと思います。あなたの提案と助けに本当に感謝します。

コード:

// このコードの上に ViewState があり、これをリセットする必要があります

   protected void Button_Click(object sender, EventArgs e)
   {
       Session["Counter"] = (int)Session["Counter"] + 1; // I do not want to reset this Session.
       Label1.Text = Session["Counter"].ToString();
       Response.Redirect("Page1.aspx"); // If this button is pressed then Session["counter"] is resetted which I don't want to happen


}

ありがとう !!

4

1 に答える 1

1

単純にカウンターをインクリメントしたい場合は、次のことを行う必要があります。

 public override void OnLoad(EventArgs e)
 {
     if(!Page.IsPostBack)
     {
        if (Session["PersistedCounter"] == null)
            Session["PersistedCounter"] = "0";

        Label1.Text = Session["PersistedCounter"];
     }
 }

 protected void Button_Click(object sender, EventArgs e)
 {
     int oldValue = int.Parse(Label1.Text);
     Label1.Text = (oldValue + 1).ToString();
     Session["PersistedCounter"] = Label1.Text;
 }

ページは既に状態を保存しているため、ラベルはサーバーにポストバックされ、現在の値がビュー ステートから復元されます。単純に値を取得し、変更を加えて値を設定します。それを試してみてください。うまくいくはずです。

あなたの解決策は、実際には物事を過度に複雑にしています。

于 2012-04-16T17:28:48.520 に答える