【问题标题】:Calling JavaScript alert from a static method in C# [closed]从 C# 中的静态方法调用 JavaScript 警报 [关闭]
【发布时间】:2016-12-20 10:20:10
【问题描述】:

如何从 C# 中的静态方法调用 JavaScript alert

我尝试了以下代码,但没有调用该方法。

 public static void WriteToErrorLog()
 {   
     Page mypage = new Page();
     ErrorMessage(mypage);                
 }
 public static void ErrorMessage(Page page)
 {
     page.ClientScript.RegisterStartupScript(typeof(Page), "alert", "<script type='text/javascript'>alert('Oops something went wrong, please try later...!!');</script>");
 }

【问题讨论】:

  • 您使用的是什么服务器技术? ASP.Net/MVC?
  • 你试过Response.Write("&lt;script&gt;alert('Oops something went wrong, please try later...!!');&lt;/script&gt;");
  • 您在 Page 的本地实例上注册脚本,当它超出范围时会消失..
  • 静态方法没有正在运行的上下文(HTTP 请求)的概念。基本上不要使用静态方法。将代码(不一定是该代码)放入基本控制器并从该控制器继承所有控制器。

标签: javascript c# asp.net static-methods


【解决方案1】:

您可以使用以下代码来获取对当前 ScriptManager 的引用:

var currentScriptManager = System.Web.UI.ScriptManager.GetCurrent(page);

然后按照以下示例使用它:

currentScriptManager.RegisterClientScriptBlock(page.GetType(), "pagename", " ", "alert('ERROR')", true);

【讨论】:

  • 你不能在静态方法中使用this
  • @stuartd:确实可以,他已经在传递对页面的引用。
  • @stuartd: 如果他没有通过页面,他可以通过使用以下行(Page)(HttpContext.Current.Handler) 获得对 is 的引用
  • @stuartd:感谢您的链接:我已将代码更新为页面参数,而不是 this 关键字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
相关资源
最近更新 更多