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);
}
}
マスターページには、表示メッセージを自動非表示にするこのスクリプトがあります。
<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>
しかし、ページがポストバックすると、メッセージが再び表示されます。一度だけ表示することはできますか?