0

我有一个带有“服务器列表”的 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.... 我该如何解决这个问题?

让我知道是否需要更多代码。

4

1 回答 1

0

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

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

  1. 在您的页面类中有一对bool成员变量。
  2. true在每个事件处理程序中设置一个。
  3. 在页面OnLoadComplete事件中,检查每个并根据需要重定向:
    • 如果两者都是true,则重定向到add.aspx
    • 如果是true,则重定向到相应的页面。
    • 否则根本不重定向。
于 2012-09-13T15:54:20.840 回答