1

当用户点击浏览器上的后退按钮时,我遇到了一个事件意外触发的问题。以下是步骤。

  1. 用户点击按钮(触发 btnNewSurvey_Click)
  2. 浏览器显示弹出窗口
  3. 用户关闭弹出窗口并从单独的链接导航到第二页。
  4. 浏览器显示第二页
  5. 用户点击返回
  6. 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();
}

问题是当用户从另一个页面回击时会调用此事件。

4

1 回答 1

0

问题似乎出在你的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

于 2013-09-23T05:38:03.137 回答