我有母版页及其继承页面。在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>
但如果页面回发显示消息再次显示。是否可以只显示一次?
答案 0 :(得分: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);
}
}
}