65.9K
CodeProject 正在变化。 阅读更多。
Home

关于 RegisterStartupScript 的两个重要提示

2014年12月25日

CPOL

2分钟阅读

viewsIcon

29256

在本博客中,我们将探讨一些与 RegisterStartupScript 方法相关的内容。

在本博客中,我们将探讨一些与 RegisterStartupScript 方法相关的内容。

显示一个警告框

string script = "alert('Hello World !!!')";

ClientScript.RegisterStartupScript(this.GetType(), "script1", script, true);

如果您在代码隐藏中编写此代码,它将在页面上显示一个警告框。 让我们看看脚本是如何动态添加到页面上的。 下面是 FireBug 脚本视图。

Example 1 Rendered Script for Alert with RegisterStartupScript

示例 1: 使用 RegisterStartupScript 渲染的警告框脚本

显示两个警告框

现在,让我们编写更多代码来运行另一个脚本。

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

这会起作用吗? 让我们在浏览器中试试看。 浏览器上只显示一个警告框,而不是两个。

Alert Box on Browser

浏览器上的警告框

这在 FireBug 的脚本选项卡中看起来是这样的…

Example 2 Rendered Script for Alert with RegisterStartupScript

示例 2: 使用 RegisterStartupScript 渲染的警告框脚本

所以,这里的问题是下一个 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);

现在的问题是,它会起作用吗? 是/否!!! 让我们测试一下。

仍然无法工作!!!

哎呀!!! 没有什么起作用。 渲染的脚本如下

Example 3 Rendered Script for Alert with RegisterStartupScript

示例 3: 使用 RegisterStartupScript 渲染的警告框脚本

你能看到问题是什么吗? 如果没有,那么控制台的以下图像将阐明我们所有的疑问。

Example 3 Console Error

示例 3: 控制台错误

头撞墙,我们缺少分号!!!

所以,我们实际上缺少分号 (;) 在第一行代码之后。 在 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 语句视为代码。

希望您喜欢阅读本博客。 欢迎在博客上发表评论。 如果您喜欢它,请在您的朋友中分享。

© . All rights reserved.