来自C#Class的Javascript警报

时间:2013-11-04 18:38:31

标签: c# javascript asp.net alert

这是我的代码,我在其中注册一个脚本块以显示来自我的C#类的Javascript警报:

public static void MessageBox(string strMessage)
{
    // Gets the executing web page
    Page page = HttpContext.Current.CurrentHandler as Page;

    string script = string.Format("alert('{0}');", strMessage);

    // Only show the alert if it's not already added to the 
    if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
    {
        page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
    }
}

在我完全加载DOM 之前调用MessageBox函数 时,这非常有用。但是,当我动态调用此函数时(例如:如果用户点击提交并且发现错误) 之后,DOM已完全加载,则警报不会弹出

我的初始调用 之前 DOM完全加载是否有效,而同样的调用 < / strong>加载的DOM不起作用?

修改

在评论中查看下面的链接后,我试了一下:

Page page = HttpContext.Current.CurrentHandler as Page;
ScriptManager.RegisterClientScriptBlock(page, typeof(Page), "MyScript", "alert('heyyyyyy');", true);

虽然ScriptManager应该用于处理AJAX调用,但这会产生与上面的原始尝试相同的结果。 Javascript警报会在初始页面加载时弹出,但不会再次弹出(在我的任何AJAX请求中)。

编辑(2):

这是我的MessageBox功能:

public static void MessageBox(string strMessage)
{
    Page page = HttpContext.Current.CurrentHandler as Page;
    ScriptManager.RegisterClientScriptBlock(page, typeof(Page), "MyScript", "alert('heyyyyyy');", true);
}

这是我称之为的地方:

public static string GetLoggedOnUserId(string strLogonUser)
    {
        string strUserId = string.Empty;

        try
        {
            MessageBox("hey");
            int intPositionOfSlash = strLogonUser.IndexOf("\\");
            strUserId = strLogonUser.Substring(intPositionOfSlash + 1, 6).ToUpper();
        }
        catch (Exception ex)
        {
            ErrorHandler('B', ex);
        }

        strLoggedOnUser = strUserId;
        return strUserId;
    }

此调用将弹出警报(因为它在第一页加载时)。

这是我第二次尝试调用MessageBox函数:

public static string LoadListItems(string strListItemStoredProcedureName, string strConnectionString)
{
    try {
        string strSQLQuery = " EXE " + strListItemStoredProcedureName.Trim() + " ";
        SqlCommand objCommand = new SqlCommand(strSQLQuery, objConnection);
        // other code here...
    }
    catch (Exception ex) {
        MessageBox("error");
    }
}

此调用 NOT 会弹出警告...请记住,此功能是通过AJAX帖子调用的 - 不会在页面重新加载。

1 个答案:

答案 0 :(得分:1)

我最终使用了我在这里找到的课程:http://www.c-sharpcorner.com/uploadfile/mahesh/webmsgbox09082006110929am/webmsgbox.aspx

无论我是在页面加载,卸载,AJAX调用等等,这都适用。您使用的简单类:

WebMsgBox.Show("Your message here");