簡體   English   中英

如何從服務器端調用 javascript 函數

[英]How can I call a javascript function from server side

我嘗試從其他 c# 函數調用 javascript 函數,但我的控制台出現錯誤

未捕獲的 ReferenceError: updateState 未定義

.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);
}

我不知道如何解決這個問題有人有任何想法嗎?

您可能忘記了注冊腳本。 請嘗試這種不同的方法。

<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

解決方案是這樣做:

.ascx.cs

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM