【问题标题】:How to hide modal pop up on browser back button如何在浏览器后退按钮上隐藏模式弹出窗口
【发布时间】:2012-03-08 14:55:20
【问题描述】:

我有一个应用程序,我将在成功插入、更新和删除时显示Modal Popup。但是当我移动到下一页并在点击浏览器后退按钮时返回上一页时执行此操作后,Modal Popup 正在显示,我不想在点击后退按钮时显示此弹出窗口。我该如何解决这个问题

protected void Page_Load(object sender, EventArgs e)
{
   if (Page.PreviousPage==null) {mpeModalPopup.Show(); }
    if (Session["Tasks"] == null)
    {
        Server.Transfer("login.aspx");
    }

    else
    {
        string strTasks = Session["Tasks"].ToString();
        if (strTasks.Contains("205"))
        {


            if (!IsPostBack)
            {
                mpeModalPopUp.Hide();
                funPageLoadData();
                CheckPopup();
                Session["url"] = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
            }

        }
        else
        {
            ReturnBack();
        }

    }

}

【问题讨论】:

    标签: c# asp.net ajax modalpopupextender


    【解决方案1】:

    您似乎没有处理 page_load 事件上的 Page.IsPostBack 布尔属性。

    if (Page.PreviousPage==null) {mpeModalPopup.Show(); }

    【讨论】:

    • 如果在提交查询后页面进行回发,那么您必须处理 Page.IsPostback 布尔属性。欲了解更多信息Page.IsPostBack MSDN Page
    • 这是我处理的是否正确if (!IsPostBack) { mpeModalPopUp.Hide(); }
    • 尝试像这样使用if (IsPostBack) { mpeModalPopUp.Show(); }
      你为什么要处理'不回发'。真正的事情是您只想在回发时显示弹出窗口,因此反过来处理会显示更少的场景。此外,如果您分析执行树,则“不回发”场景不仅仅是“回发”场景。
    • 即使我也尝试过if (IsPostBack) { mpeModalPopUp.Show(); },但在点击浏览器后退按钮时仍然显示pop up
    • 好的...你也可以试试这个...if (Page.PreviousPage==null) {mpeModalPopup.Show(); }。欲了解更多信息结帐Page.PreviousPage on MSDN
    【解决方案2】:

    为了打开弹出窗口(回发后),asp.net 更改 html 或插入 javascript 函数以显示模式弹出窗口。

    我知道的唯一解决方案是在单击按钮时触发 ajax 回发(使用 UpdatePanel)而不是完整的回发。这样,弹出窗口由 ajax 调用加载,并且在您稍后按下后退按钮时不会显示。

    【讨论】:

    • 这是我处理的是否正确if (!IsPostBack) { mpeModalPopUp.Hide();}
    • 问题是当点击后退按钮时你的代码甚至不会运行,页面是从缓存加载的。如果最后一个页面加载(无论是否回发)有一个弹出窗口,它将再次显示该弹出窗口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多