RegisterClientScriptBlock、RegisterStartupScript 都是注册一个脚本块。

ClientScript.RegisterClientScriptBlock(this.GetType(), "script1", "alert(1);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);

它们的区别就是 RegisterClientScriptBlock 是注册在 body 最前面,而 RegisterStartupScript 是注册在 body 最后面。

为什么这样呢?一些优化性能的文章说,script 要放在 body 最后加载,但根据一些应用的实际情况,必须得在最初加载 script,这时就得用 ClientScript.RegisterStartupScript 了。

说说他们的第二个参数 key。

第二个参数 key 是用来避免重复注册的,上面代码,他们的 key 都是 script1,但不会冲突,因为方法名称都不相同。

下面代码都是 RegisterStartupScript,第二句就不会有任何输出,因为之前已经注册过一个 script1 的脚本了。

ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(3);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script2", "alert(4);", true);
 

虽然,Response.Write 可以输出 JavaScript,但输出的内容是在 <html> 之前,这会导致一些问题,比如样式表失效,甚至会导致一些脆弱的浏览器发生错误。

ClientScript 则可以方便地管理 JavaScript,应该说 ClientScript.RegisterClientScriptBlock 与 ClientScript.RegisterStartupScript 只有一点区别,那就是 RegisterClientScriptBlock 将脚本代码写在 <form> 之后,而 RegisterStartupScript 将代码写在 </form>(注意是结束标签)之前。

public void RegisterClientScriptBlock(Type type, string key, string script)
public void RegisterClientScriptBlock(Type type, string key, string script, bool addScriptTags)
public void RegisterStartupScript(Type type, string key, string script)
public void RegisterStartupScript(Type type, string key, string script, bool addScriptTags)

可以看出二者语法相同。

  • type 要注册的启动脚本的类型。
  • key 要注册的启动脚本的键,也就是你自己给这段脚本起的名字。相同 key 的脚本被当作是重复的,对于这样的脚本只输出最先注册的,ClientScriptBlock 和 StartupScript 中的 key 相同不算是重复的。
  • script 脚本代码。
  • addScriptTags 是否添加 <script> 标签,如果脚本代码中不含 <script> 标签,则应该指定该值为 true,若不指定该值,会被当作 false 对待。
ClientScript.RegisterClientScriptBlock(this.GetType(), "key1", @"function Go()
{
alert('');
}", true);
ClientScript.RegisterStartupScript(this.GetType(), "key1", "Go();", true);

RegisterClientScriptBlock 与 RegisterStartupScript 的区别的更多相关文章

  1. RegisterClientScriptBlock和RegisterStartupScript的区别

    RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚 ...

  2. Response.Write 、RegisterClientScriptBlock和RegisterStartupScript总结

    Response.Write .RegisterClientScriptBlock和RegisterStartupScript总结 Page.ClientScript.RegisterStartupS ...

  3. Response.Write,Page.RegisterClientScriptBlock和Page.RegisterStartupScript的区别

    Response.Write("<script>");输出在文件头部,一打开就执行. RegisterClientScriptBlock一般返回的是客户端函数的包装, ...

  4. ASP.NET in C#,ClientScript.RegisterStartupScript与ClientScript.RegisterClientScriptBlock用法之己见

    ClientScript.RegisterStartupScript:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscrip ...

  5. ASP.NET 给作为隐藏域的TextBox赋值之后提交表单,无响应?

    操作步骤: 给页面隐藏TextBox赋值,然后触发ASP.NET change事件,调用ASP.NET后台方法,调用后执行客户端脚本this.RegisterClientScriptBlock(Dat ...

  6. ASP.NET中后台注册js脚本攻略(转)

    用Page.ClientScript.RegisterClientScriptBlock 和Page.ClientScript.RegisterStartupScript:区别:   1.使用Page ...

  7. Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager等的详细解说

    在 .aspx.cs页面中,输入这四个东西:Page.ClientScript.ClientScript.ScriptManager.ClientScriptManager,均会出提示,表示它们均可用 ...

  8. asp.net 自定义控件

    在Visual Studio中,所有的ASP.NET 2.0控件都是自定义控件,创建自己的自定义控件一般需要完成以下三步.(1)在站点APP_Code下创建一个新类:(2)修改这个类,让它成为WebC ...

  9. C# 中解决页面刷新后字体等变大问题

    来源:http://blog.csdn.net/wcsjsdn/article/details/5109605 我们在.net开发中时常会遇到一个问题,那就是,当点击某个按钮后,调用js语句,当点击& ...

随机推荐

  1. 获取验证码,60秒倒计时js

    <input type="button" id="btn" value="免费获取验证码" /><script type= ...

  2. OC小结

    #import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * a ...

  3. Radiobutton编辑

    package com.example.yuekao3; import java.util.ArrayList;import java.util.List; import com.baidu.farm ...

  4. Jlink V7在MDK下使用Cortex-M3-Jlink模式开发STM32的说明

    Jlink V7在MDK下使用Cortex-M3-Jlink模式开发STM32的说明   开发环境:STM32F103RB(128K Flash 20K RAM)+MDK3.50+JLINK V7(v ...

  5. html5的特性

    1.简化的语法更简单的doctype声明是HTML5里众多新特征之一.现在你只需要写,这就行了.HTML5的语法兼容HTML4和XHTML1,但不兼容SGML. 2. 一个替代Flash的新”canv ...

  6. html5的发展历程

    20年磨一剑,HTML5作为下一代Web标准,她的语义之美.人性之美.简单之美.实用之美……如同一场革命,将Web从内容平台推向标准化的应用平台,并一统各在平台阵营的标准.2008年,HTML5发布首 ...

  7. Codeforces Round #112 (Div. 2)

    Codeforces Round #112 (Div. 2) C. Another Problem on Strings 题意 给一个01字符串,求包含\(k\)个1的子串个数. 思路 统计字符1的位 ...

  8. hdu1811 并查集+拓扑序

    题意:现在有一个排名系统,有一系列信息,分别是 > < = 的比较,而如果最终相等,就会将这些相等的按照序号从小到大排,问给出的信息是否可以确定完整的排序. 由于如果很多点相等,他们肯定能 ...

  9. C# TcpClient TcpListener 简单练习01

    下面是读<Visual C#.Net 网络编程>整理的练习代码. 客户端发送命令给服务端,从服务器端获取所有人员的成绩或者指定人员的成绩. 命令格式为 GET 0|1 [Name].0为获 ...

  10. IAR MSP430如何生成烧写文件

    IAR生成430烧写方法有2种, 第一种是:将工程的debug模式切换成release模式,看图片操作.    那个.d43文件就是仿真调试模式的文件. 这里的test.txt文件就是烧写文件了,不要 ...