这是我的代码,我在其中注册一个脚本块以显示来自我的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帖子调用的 - 不会在页面重新加载。
答案 0 :(得分:1)
我最终使用了我在这里找到的课程:http://www.c-sharpcorner.com/uploadfile/mahesh/webmsgbox09082006110929am/webmsgbox.aspx
无论我是在页面加载,卸载,AJAX调用等等,这都适用。您使用的简单类:
WebMsgBox.Show("Your message here");