0

我有母版页及其继承页面。在 masterpage 我有一个文字,我按条件显示消息。在继承页面中,我正在使用 stringbuilder 创建这些消息。

literal.Text = "<div id=\"alertWarning\" style=\"display:none; color:#fff; text-align:center; padding: 8px 10px 9px; width:auto; position:relative; background:#C79810;\"><h3>" + title + "</h3><p>" + error + "</p></div>";

            StringBuilder sb = new StringBuilder();
            sb.Append("$(function() { ");
            sb.Append(" $('#alertWarning').toggle({");
            sb.Append("    width: 400");
            sb.Append(" });");
            sb.Append("});");
            sb.Append("$('html, body').animate({ scrollTop : 0 }, '500');");

            if (HttpContext.Current.CurrentHandler is Page)
            {
                Page pa = (Page)HttpContext.Current.CurrentHandler;

                if (ScriptManager.GetCurrent(pa) != null)
                {
                    ScriptManager.RegisterStartupScript(pa, typeof(Page), "alert", sb.ToString(), true);
                }
                else
                {
                    pa.ClientScript.RegisterClientScriptBlock(typeof(Page), "alert", sb.ToString(), true);
                }
            }


在 masterpage 我有这个脚本来自动隐藏显示消息。

<script type="text/javascript">
        function pageLoad(sender, args) {
            setTimeout(function () { $("#alertError").toggle("close"); }, 5000);
            setTimeout(function () { $("#alertSuccess").toggle("close"); }, 2000);
            setTimeout(function () { $("#alertWarning").toggle("close"); }, 3000);
        };
    </script>


但是如果页面回发显示消息再次显示。是否可以只显示一次?

4

1 回答 1

1

一个简单的解决方案是仅在不是 PostBack 时添加该脚本。

    if (HttpContext.Current.CurrentHandler is Page)
    {
        Page pa = (Page)HttpContext.Current.CurrentHandler;
        if(!pa.IsPostBack)
        {
            if (ScriptManager.GetCurrent(pa) != null)
            {
                ScriptManager.RegisterStartupScript(pa, typeof(Page), "alert", sb.ToString(), true);
            }
            else
            {
                pa.ClientScript.RegisterClientScriptBlock(typeof(Page), "alert", sb.ToString(), true);
            }
        }
    }
于 2012-09-21T07:39:12.687 回答