2012-09-13 155 views
0

我有已启用的AutoPostBack一个“服务器列表”和SelectedIndexChanged事件连接到一个ListBox:执行最后一个动作时后退按钮按下ASP.Net

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); 
    } 

方案:如果我从列表框中选择一个项目就会去detail.aspx表示服务器规格:真棒。 现在,如果我点击返回(浏览器按钮),然后在文本框中键入一些内容,然后单击btnServerToAdd它仍然会去detail.aspx,而不是add.aspx,因为它应该... 我该如何解决这个问题?

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

回答

0

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

我想不出如何使SelectedIndexChanged事件周围触发第二次,所以不是你可以做的是,而不是Redirect荷兰国际集团在事件本身:

  1. 有一个在您的页面类中配对bool成员变量。
  2. 在每个事件处理程序中设置一个为true
  3. OnLoadComplete页面事件,检查每个并在必要时重定向:
    • 如果两个true,重定向到add.aspx
    • 如果其中一个是true,则重定向到相应的页面。
    • 否则根本不要重定向。
+0

但事件在加载后处理。 – Paparazzi

+0

PreRender然后。你明白了。 – Rawling

+0

非常感谢回复,也许我不太了解c#。我添加了bool成员变量,但是每次加载页面时,它们都被重置。我使用了ViewState,但我必须执行两次页面操作才能到达我想要的位置。 – Iv4n