简体   繁体   中英

How can I call a javascript function from server side

I try to call a javascript function from an other c# function but I have an error in my console

Uncaught ReferenceError: updateState is not defined

.ascx file

<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 file

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

I don't know how to resolve that issue someone have any idea ?

You may have forgotten to register the script. Try this different approach instead.

<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>

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

The solution was to do that :

.ascx.cs

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM