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