为什么我无法在类的updatepanel页面中显示js错误警报?

时间:2012-09-17 13:27:25

标签: jquery asp.net updatepanel

我有一个radiobutton(在updatepanel中),在checkchanged事件中,我正在向用户显示一条消息。但是div在masterpage中并且页面没有呈现,这就是我无法显示消息的原因。 有可能解决这个问题吗?顺便说一句,我正在使用类来显示消息。 这是我的代码。

public static void setError(System.Web.UI.Page p, string title, string error, string type)
    {
        Literal literal = p.Master.FindControl("ltMessage") as Literal;

        if (type == "error")
        {
            literal.Text = "<div id=\"alertError\" style=\"display:none; color:#fff; text-align:center; padding: 8px 10px 9px; width:auto; position:relative; background:#cc0000;\"><h3>" + title + "</h3><p>" + error + "</p></div>";
            //literal.Text = "<div id=\"alert\" class=\"error message\"><h3>" + title + "</h3><p>" + error + "</p></div>";

            StringBuilder sb = new StringBuilder();
            sb.Append("$(function() { ");
            sb.Append(" $('#alertError').toggle({");
            sb.Append("    width: 400");
            sb.Append(" });");
            sb.Append("});");

            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);
                }
            }
        }
}

2 个答案:

答案 0 :(得分:1)

不确定您是如何调用该setError的。但$(function() {...})是同义词 $(document).ready(function(){...})仅在加载页面后调用。 UpadtePanel正在进行AJAX调用,不会运行$(document).ready事件。请尝试以下代码:

StringBuilder sb = new StringBuilder();
sb.Append(" $('#alertError').toggle({");
sb.Append("    width: 400");
sb.Append(" });");

如果你正确地做其他事情,这应该有效。

答案 1 :(得分:0)

我修好了。我将我的div放在masterpage中的updatepanel中。现在它完美无缺。