c# - 从 global.asax.cs 调用 JavaScript 函数

标签 c# javascript asp.net global-asax scriptmanager

我想从 global.asax.cs 文件调用 JavaScript 函数(它在内部显示有关错误消息的弹出窗口)。这是我在 Global.asax.cs 文件中尝试的代码,

protected void Application_Error(object sender, EventArgs e)
{
    System.Web.UI.Page mypage = (System.Web.UI.Page)HttpContext.Current.Handler;
    mypage.RegisterStartupScript("alert", "<script language=javascript>alert('test');</script>");
}

但它不会调用警报,也不会在 Firebug 中给出任何错误或警告消息和谷歌浏览器控制台。 JavaScript代码如何调用?

最佳答案

此时您会遇到两种不同类型的错误。

  1. 编译器抛出的错误。
  2. 您的程序抛出的错误。

编译器可以在那里抛出任何错误,例如,它无法在后面的代码中找到文字控件。在这种情况下,您的页面甚至不存在,此时无法获取它并发出此 JavaScript 警报。

程序运行时的错误,例如 null 异常,也可以停止呈现页面,这也会停止页面,您不能在那里拥有页面处理程序。

所以 HttpContext.Current.Handler 不是页面

一般来说,Application_Error 用于捕获和记录未处理的错误,以便稍后解决它们,并可能向用户显示更好的错误页面。

如果您只是想在调试时查看错误,您可以使用如下代码:

void Application_Error(object sender, EventArgs e)
{
    Exception LastOneError = Server.GetLastError();
    if (LastOneError != null)
    {
        Debug.Fail("Unhandled error: " + LastOneError.ToString());
        LogTheError(LastOneError);
    }
}

自定义错误页面

我能想到做类似事情的唯一方法是在错误出现到解释错误的新页面时进行重定向 - 但这是自定义错误页面已经做的事情。

更多

这是我处理自定义错误并保持同步的方式。文件检查是为了避免可能导致池崩溃的闭环。

  string cTheFile = HttpContext.Current.Request.Path;

  if (!cTheFile.EndsWith("ErrorHandlePage.aspx"))
      Server.Transfer("~/ErrorHandlePage.aspx");

关于c# - 从 global.asax.cs 调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776711/

相关文章:

javascript - 如何使用 javascript 更改 img src?

asp.net - 单独验证 Div 标签

c# - asp.net中如何输入3组数据

c# - 从数据库发送时间/日期通知

c# - 如何在 ASP.NET Core Web API 应用程序中创建全局变量?

javascript - Promise 返回空列表

javascript - 我怎样才能在 jQuery 中复制这个?

asp.net - 使用发布和 .dll .编译文件部署 ASP.NET 网站

c# - 如何将文本框/组合框值传递给 rdlc 报告文本字段?

c# - 在图像中定位文本