当后退按钮按下ASP.Net时执行最后一个动作

时间:2012-09-13 15:45:05

标签: c# webforms

我有一个带有“服务器列表”的ListBox,它启用了AutoPostBack并附加了一个SelectedIndexChanged事件:

    protected void lbServerList_SelectedIndexChanged(object sender, EventArgs e)
    {            
        if ( lbServerList.SelectedValue.ToString() != "")
        {
            Response.Redirect("detail.aspx?Server=" +  lbServerList.SelectedValue.ToString());
        }
    }

然后我有一个文本框添加一个带有“btnServertoAdd”按钮的“服务器”(以执行添加)

    protected void btnServertoAdd_Click(object sender, EventArgs e)
    {
        Response.Redirect("add.aspx?Server=" + tbServertoAdd.Text);
    }

场景:如果我从ListBox中选择一个项目,它将转到detail.aspx,显示服务器规格:真棒。 现在,如果我单击后退(浏览器按钮),然后在TextBox中键入内容并单击btnServerToAdd,它仍然会转到detail.aspx而不是add.aspx,因为它应该.... 我该如何解决这个问题?

如果需要更多代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

这是因为当您单击按钮时,所选服务器也与原始值不同(存储在视图状态中)。两个事件都被触发,但显然SelectedIndexChanged事件先被触发,而Redirect会跳过剩余的处理。

我想不出如何SelectedIndexChanged事件第二次触发,所以你可以做的是,而不是Redirect进入事件本身:

  1. 在您的网页类中有一对bool成员变量。
  2. 在每个事件处理程序中将{1}设置为true
  3. 在页面OnLoadComplete事件中,检查每个并根据需要重定向:
    • 如果两者均为true,请重定向至add.aspx
    • 如果其中一个是true,请重定向到相应的页面。
    • 否则请勿重定向。