C# 按“后退”按钮时执行最后一个操作ASP.Net

C# 按“后退”按钮时执行最后一个操作ASP.Net,c#,webforms,C#,Webforms,我有一个带有“服务器列表”的列表框,该列表框启用了自动回发功能,并附加了SelectedIndexChanged事件: protected void lbServerList_SelectedIndexChanged(object sender, EventArgs e) { if ( lbServerList.SelectedValue.ToString() != "") { Response.Re

我有一个带有“服务器列表”的列表框,该列表框启用了自动回发功能,并附加了SelectedIndexChanged事件:

    protected void lbServerList_SelectedIndexChanged(object sender, EventArgs e)
    {            
        if ( lbServerList.SelectedValue.ToString() != "")
        {
            Response.Redirect("detail.aspx?Server=" +  lbServerList.SelectedValue.ToString());
        }
    }
然后我有一个文本框来添加一个带有按钮“btnServertoAdd”的“服务器”(执行添加)

场景:如果我从列表框中选择一个项目,它将转到detail.aspx,显示服务器规格:Awesome。 现在,如果我单击“上一步”(浏览器按钮),然后在文本框中键入一些内容,然后单击“BTN服务器添加”,它仍然会转到detail.aspx,而不会像应该的那样添加.aspx。。。。 我怎样才能解决这个问题


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

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

我想不出如何不让
SelectedIndexChanged
事件第二次触发,因此您可以做的是,而不是
重定向事件本身:

  • 在页面类中有一对
    bool
    成员变量
  • 在每个事件处理程序中将一个设置为
    true
  • 在页面
    onload complete
    事件中,检查每个事件,并根据需要重定向:
    • 如果两者都是
      true
      ,则重定向到
      add.aspx
    • 如果其中一个为
      true
      ,则重定向到相应页面
    • 否则,根本不要重定向

  • 但事件是在Load.PreRender之后处理的。你明白了。非常感谢你的回复,也许我对c#的了解不够深入。我添加了bool成员变量,但是每次加载页面时都会重置它们。我使用了ViewState,但我必须执行两次该操作才能使页面转到我想要的位置。不,我的想法是在每次页面加载开始时它们都是
    false
    。然后,您可以查看在该页面加载上触发了两个事件中的哪一个,并决定是否要重定向,而不是在任何一个事件发生时立即重定向。
        protected void btnServertoAdd_Click(object sender, EventArgs e)
        {
            Response.Redirect("add.aspx?Server=" + tbServertoAdd.Text);
        }