关于 RegisterStartupScript 的两个重要提示






3.74/5 (8投票s)
在本博客中,我们将探讨一些与 RegisterStartupScript 方法相关的内容。
在本博客中,我们将探讨一些与 RegisterStartupScript
方法相关的内容。
显示一个警告框
string script = "alert('Hello World !!!')";
ClientScript.RegisterStartupScript(this.GetType(), "script1", script, true);
如果您在代码隐藏中编写此代码,它将在页面上显示一个警告框。 让我们看看脚本是如何动态添加到页面上的。 下面是 FireBug 脚本视图。
显示两个警告框
现在,让我们编写更多代码来运行另一个脚本。
string script = "alert('Hello World !!!')";
string script1 = "alert('Hello World Again !!!')";
ClientScript.RegisterStartupScript(this.GetType(), "script", script, true);
ClientScript.RegisterStartupScript(this.GetType(), "script", script1, true);
这会起作用吗? 让我们在浏览器中试试看。 浏览器上只显示一个警告框,而不是两个。
这在 FireBug 的脚本选项卡中看起来是这样的…
所以,这里的问题是下一个 Alert
在哪里? 为什么它不起作用? 为什么它没有在浏览器上呈现?
第二个警告框发生了什么?
所以,之后,我更深入地研究了代码,在喝了杯咖啡后,试着仔细看看我写了什么。
该方法的第二个参数实际上是一个键。
启动脚本由其键及其类型唯一标识。 具有相同键和类型的脚本被视为重复项。 只能使用给定的类型和键对注册一个脚本到页面。 尝试注册已经注册的脚本不会创建脚本的副本。
调用 IsStartupScriptRegistered 方法来确定是否已经注册了具有给定键和类型对的启动脚本,并避免不必要地尝试添加脚本。
第一行清空所有内容。 还有一个方法可以检查脚本是否已经注册。
我们应该为我们注册的每个脚本使用唯一的键
所以,事不宜迟,我快速更改了密钥。 所以,代码将看起来像…
string script = "alert('Hello World !!!')";
string script1 = "alert('Hello World Again !!!')";
ClientScript.RegisterStartupScript(this.GetType(), "script", script, true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", script1, true);
现在的问题是,它会起作用吗? 是/否!!! 让我们测试一下。
仍然无法工作!!!
哎呀!!! 没有什么起作用。 渲染的脚本如下
你能看到问题是什么吗? 如果没有,那么控制台的以下图像将阐明我们所有的疑问。
头撞墙,我们缺少分号!!!
所以,我们实际上缺少分号 (;) 在第一行代码之后。 在 JavaScript 中,分号是可选的,前提是代码行之间用换行符分隔。 但在这里,RegisterStartupScript
将脚本添加在一行中,这最终会破坏页面。
让我们再次修改我们的代码,以便在 Alert
语句后包含分号。
string script = "alert('Hello World !!!');";
string script1 = "alert('Hello World Again !!!');";
ClientScript.RegisterStartupScript(this.GetType(), "script", script, true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", script1, true);
现在,它完美地工作了,一个接一个地显示两个 Alert
框。
结论
我们探讨了以下几点。
RegisterStartupScript
方法中的键应该是唯一的。- 每个 JavaScript 语句最后都应该有一个分号,这样它才会将下一个 JavaScript 语句视为代码。
希望您喜欢阅读本博客。 欢迎在博客上发表评论。 如果您喜欢它,请在您的朋友中分享。