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

Page.ClientScript.RegisterStartupScript 和 Page.ClientScript.RegisterClientScriptBlock 的区别

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.64/5 (6投票s)

2013 年 10 月 11 日

CPOL

2分钟阅读

viewsIcon

91287

主要区别在于 RegisterStartupScript 方法将 JavaScript 放置在 ASP.NET 页面的底部,紧挨着结束标签之前。

主要区别在于 RegisterStartupScript 方法将 JavaScript 放置在 ASP.NET 页面的底部,紧挨着结束 </form> 标签之前。而 RegisterClientScriptBlock 方法将 JavaScript 直接放置在页面的起始 <form> 标签之后。那么这有什么区别呢?这可能会有很大的区别,正如我们将会看到的。

例如,以下是在页面加载到浏览器时,使用 RegisterStartupScript 方法将焦点放在文本框上的方法(使用 Visual Basic):

Page.ClientScript.RegisterStartupScript(Me.GetType(), "Testing", _ 
"document.forms[0]['TextBox1'].focus();", True)

这可以很好地工作,因为页面上的文本框在浏览器到达页面底部并执行这段 JavaScript 之前就已经生成并放置在页面上了。但是,如果改为这样编写(使用 RegisterClientScriptBlock 方法):

Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "Testing", _
"document.forms[0]['TextBox1'].focus();", True)

焦点将无法到达文本框控件,并且页面上会生成 JavaScript 错误。

原因是浏览器会在文本框出现在页面之前就遇到 JavaScript。因此,JavaScript 将无法找到 TextBox1

将 JavaScript 放在单独的文件中 (.js)

强烈建议将 JavaScript 函数放在单独的文件中(.js 文件)。一旦它们位于单独的文件中并成为项目的一部分,就可以使用前面描述的一些方法将该文件导入到页面中。

例如,可以使用以下代码在 ASP.NET 页面中包含 .js 文件:

Visual Basic

Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", _
"MyJavaScriptFile.js")

C#

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", 
"MyJavaScriptFile.js");

一旦 .js 文件导入到 ASP.NET 页面,就可以像以前一样调用任何 JavaScript 函数。这是管理 JavaScript 函数并将其与 ASP.NET 页面的其他逻辑分离的好方法。同时,这也是在多个 ASP.NET 页面上使用相同 JavaScript 函数的简便方法。

Page.ClientScript.RegisterStartupScript 和 Page.ClientScript.RegisterClientScriptBlock 的区别 - CodeProject - 代码之家
© . All rights reserved.