2

以前に入力したセッション変数を更新しようとすると、更新されません。

私が話していることの例を次に示します。

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["Test"] != null) 
    {
        TextBox1.Text = Session["Test"].ToString();
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    Session["Test"] = TextBox1.Text;
}

そのため、最初にボタンをクリックすると、テキストボックスが更新されます。しかし、テキストを編集してボタンをもう一度クリックすると、テキストボックスは最初の状態に戻ります。つまり、更新されません。誰にもアイデアはありますか?

4

6 に答える 6

0

あなたのページが投稿されたので、あなたが書いたように以前の値を取っています

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["Test"] != null) 
    {
        TextBox1.Text = Session["Test"].ToString();
    }
}

このコードの int テキスト ボックスのテキストは、以前に入力した値で復元されるため、コードは次のようになります。

 protected void Page_Load(object sender, EventArgs e)
    {

if(!IsPostBack)
{
if (Session["Test"] != null) 
        {
            TextBox1.Text = Session["Test"].ToString();
        }
    }
}
于 2013-05-06T05:44:25.243 に答える
0

これはうまくいくはずです

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (Session["Test"] != null)
        {
            TextBox1.Text = Session["Test"].ToString();
        }
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    Session["Test"] = TextBox1.Text;
}
于 2013-05-06T05:45:19.027 に答える
0

Button Clickの前にPage_Loadイベントを取得しているため、Page_LoadはTextBox1.Textの値をセッションの前の値で上書きしています。そのため、最初に設定した後は変更されません。

次のような Page_Load の投稿に応答していないことを確認します。

  protected void Page_Load(object sender, EventArgs e)
  {
     if (!IsPostBack)
     {
        TextBox1.Text = (Session["Test"] ?? "").ToString();
     }
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
     Session["Test"] = TextBox1.Text;
  }

そうは言っても、おそらくセッションの使用を完全に避けたいと思うでしょう。

于 2013-05-06T05:55:34.567 に答える