简体   繁体   中英

How do I call a JavaScript function from Asp.Net Code Behind?

This is my JavaScript function :

function WantToSave()
{
    alert('You should save now !');
}

And this is my ASP.NET code behind :

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();");

The RegisterStartupScript function is reached, that's sure. But it won't trigger my JavaScript function. And that second parameter, it is supposed to be a "Key of the starting script" yes but what should I put there?

By default, the script is written to the output but without the <script> tags. You probably would have noticed this if you were using your browser's JavaScript console or looking at the resulting HTML on the client. Make sure you familiarize yourself with those tools.

You can have it add the script tags for you with a slightly different overload of the method.

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();", true);

Or you can add them yourself:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "<script>WantToSave();</script>");

The combination of the key string and the type the control was registered with serve to uniquely identify the registered script, in case you later want to unregister it or replace it with a different script. So the key doesn't have to be anything specific, just something unique.

You can use script manager register startup script method. It has a bool parameter (last one) called add script tags which add the script tags for you.

ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "WantToSave();",true); 

You should try this:

var name = "WantToSave";
var script = "<script>alert('You should save now !');</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), name, script);

Or you should add a true parameter at the end of your call, which specifies adding script tags.

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();",true);

According to MSDN using this overload you have to wrap your call in <script></script> tags, so you would do:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "<script>WantToSave();</script>");

or use the other overload

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();", true);

which will adds them or not depending on the boolean parameter.

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