如果我从字段中删除值并重新提交表单,请删除会话值

本文关键字:删除 提交 表单 会话 字段 如果 新提交 | 更新日期: 2023-09-27 18:09:03

我有一个asp.net webform,它存储会话中输入的详细信息,然后在稍后的确认页面上显示所有详细信息。这些作品都很好。如果用户导航回页面,详细信息仍然显示,但问题是:

用户场景

用户在非必填字段中输入详细信息并继续。该值将按预期显示在确认页面上。用户然后回到页面并删除非强制字段中的值并继续,但是删除的值仍然在我的确认页面上被删除。

我已经调试了它,首先我可以看到字段是空的。但是当代码落回我的submitbutton_click时,它会重新添加它。

我的当前代码如下所示:

protected void Page_Load(object sender, EventArgs e)
{            
     if (Step01AddressBuildingname.Text == string.Empty && Session["Step01AddressBuildingname"] != null)
     {
          Step01AddressBuildingname.Text = Session["Step01AddressBuildingname"].ToString();
     }
}
protected void Step01SubmitButton_Click(object sender, EventArgs e)
{
     Session["Step01AddressBuildingname"] = Step01AddressBuildingname.Text;
}

如果我从字段中删除值并重新提交表单,请删除会话值

从您的帖子中我可以看出,当您将Step01AddressBuildingname字段更新为空白并单击提交时,这并没有像预期的那样清除会话值。如果是这样,那是因为您没有在page_load事件中处理post。在asp.net webforms中,当表单提交到服务器时就会发生回发,在这种情况下,您只想处理表单提交,而不是作为标准加载页面。您可以通过检查页面上的IsPostBack属性来做到这一点。

在你的代码中,因为你没有检查这个属性,tep01AddressBuildingname.Text = Session["Step01AddressBuildingname"].ToString();在提交按钮的点击事件处理程序之前被执行-因此值没有被删除。试试这个

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack) { 
            if (Step01AddressBuildingname.Text == string.Empty && Session["Step01AddressBuildingname"] != null)
            {
                Step01AddressBuildingname.Text = Session["Step01AddressBuildingname"].ToString();
            }
        }
    }
    protected void Step01SubmitButton_Click(object sender, EventArgs e)
    {
        Session["Step01AddressBuildingname"] = Step01AddressBuildingname.Text;
    }