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

Remove Session Value If I Delete Value From Field And Re-Submit Form

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

用户场景

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

我已经调试过了,一开始我看到这个字段是空的。但是当代码回到我的 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;
}

从您的 post 中我可以看出,当您将 Step01AddressBuildingname 字段更新为空白并单击提交时,这并没有按预期清除会话值。如果是这样,那是因为您没有在 page_load 事件中处理 post。在 asp.net 网络表单 post 中,表单提交到服务器时会发生返回,在这种情况下,您只想处理表单提交,而不是按标准方式加载页面。您可以通过检查页面上的 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;
    }