我有一个问题,当用户点击浏览器上的后退按钮时,事件意外触发。以下是步骤。
- 用户单击按钮(触发btnNewSurvey_Click)
- 浏览器显示弹出窗口
- 用户关闭弹出窗口并从单独的链接导航到第二个页面。
- 浏览器显示第二页
- 用户点击返回
- 再次触发btnNewSurvey_Click(这是问题所在)
我想知道为什么会发生这种情况。我已经研究了asp.net的页面生命周期以及关闭页面缓存,但我无法解释。
如果还需要信息,请告诉我。谢谢!
更新:似乎只有当用户从chrome单击回来时,按钮单击事件才会被触发
.aspx
<asp:Button ID="btnNewSurvey" runat="server" Text="New Survey" OnClick="btnNewSurvey_Click" />
aspx.cs
protected void btnNewSurvey_Click(object sender, EventArgs e)
{
rwScreenList.VisibleOnPageLoad = true;
rwScreenList.Visible = true;
ListBox lbox = rwScreenList.ContentContainer.FindControl("lboxScreenSelection") as ListBox;
((Label)rwScreenList.ContentContainer.FindControl("lblScreenError")).Text = "";
lbox.DataSource = DatabaseFactory.GetScreensForProject(ProjectId);
lbox.DataBind();
}
问题是当用户从另一个页面返回时,将调用此事件。
问题似乎出在您的rwScreenList.VisibleOnPageLoad = true;
正如我所看到的,这是 telerik 属性,当您使用此属性时,您需要经历某些事情。
您也可以这样做:
rwScreenList.VisibleOnPageLoad = !Page.IsPostBack;
请参阅下面的讨论,这将帮助您解决问题。
http://www.telerik.com/community/forums/aspnet-ajax/window/radwindow-reopening-after-closing-it-in-every-postback.aspx