【问题标题】:How can I call a javascript function from server side如何从服务器端调用 javascript 函数
【发布时间】:2020-03-09 11:54:49
【问题描述】:

我尝试从其他 c# 函数调用 javascript 函数,但我的控制台出现错误

Uncaught ReferenceError: updateState is not defined

.ascx 文件

<script>    
    function updateState(){
        console.log("test")
    }   
</script>

<button runat="server" ID="Btn_Modify_state" onserverclick="Btn_Modify_state_Click">
    <i class="fas fa-edit"></i>
</button>

.ascx.cs 文件

protected void Btn_Modify_state_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "script", "updateState();", true);
}

我不知道如何解决这个问题,有人知道吗?

【问题讨论】:

  • 在结果页面中,RegisterClientScriptBlock 将其代码放在哪里?如果是在定义函数之前,那么您可能只需将函数定义移到页面的前面。
  • 指定类型

标签: javascript c# ascx


【解决方案1】:

您可能忘记注册脚本。请尝试这种不同的方法。

<script runat="server">
  public void Page_Load(Object sender, EventArgs e)
  {
    // Define the name and type of the client script on the page.
    String csName = "updateState";
    Type csType = this.GetType();

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the client script is already registered.
    if (!cs.IsClientScriptBlockRegistered(csType, csName))
    {
      // If not, redefine your script
      var csText = $"
      <script type=\"text/javascript\">
        function updateState(){
          console.log("test")
        }
      </script>";
      cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
    }
  }
</script>

来源:https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.clientscriptmanager.registerclientscriptblock?view=netframework-4.8

【讨论】:

    【解决方案2】:

    解决方案是这样做:

    .ascx.cs

    protected void Btn_Modify_state_Click(object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "<script type='text/javascript'>updateState();</script>");
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 2018-10-19
      • 2011-12-09
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      相关资源
      最近更新 更多