RegisterStartupScript和RegisterClientScriptBlock区别(ZZ)

RegisterStartupScript(key, script) 
RegisterClientScriptBlock(key, script)
这两个方法的作用都是从前台向后台写脚本,且都接受两个相同的参数:
     第一个参数 key 是插入的客户端脚本的唯一标识符。
     第二个参数 script 是要插入到页面中的客户端脚本内容,包括 <script> 的起始标记和终止标记</script>。
     
   这两个方法唯一的不同之处在于向“何处”注册脚本块。
         RegisterClientScriptBlock(key, script) 在 form开始处(紧接 <form runat="server"> 标识之后)发送脚本块      
         使用场景:
               一般不使用DOM元素
         RegisterStartupScript(key, script) 在 form结尾处(在 </form> 标识之前)发送脚本块,在document装载完成后会执行,等价于body.onload=f(){}里的内容
         使用场景:
               一般要使用DOM元素,比如:修改dom元素的值等

——————————————————————————————————————————————————————————————————————

Page.ClientScript.RegisterClientScriptBlock & Page.ClientScript.RegisterStartupScript


1、使用Page.ClientScript.RegisterClientScriptBlock
RegisterClientScriptBlock方法可以把JavaScript函数放在页面的顶部。也就是说,该脚本用于在浏览器中启动页面。

<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender,EventArgs e)
{
string myScript = @"function AlertHello() { alert('Hello ASP.NET'); }";
Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),
"MyScript",myScript,true);
}
</script>

在这个例子中,把JavaScript函数AlertHello()创建为一个字符串myScript。然后使用Page. ClientScript.RegisterClientScriptBlock方法编写放在页面上的脚本。RegisterClientScriptBlock方法的两个构建方式如下:
● RegisterClientScriptBlock (type,key,script)
● RegisterClientScriptBlock (type,key,script,script tag specification)

4.4.2 使用Page.ClientScript.RegisterStartupScript
RegisterStartupScript方法与RegisterClientScriptBlock方法的区别不大。最大的区别是RegisterStartupScript把脚本放在ASP.NET页面的底部,而不是顶部。实际上,RegisterStartup Script方法甚至使用与RegisterClientScriptBlock方法相同的构造函数:
● RegisterStartupScript (type,key,script)
● RegisterStartupScript (type,key,script,script tag specification)
那么,在页面上注册脚本的过程有什么区别?实际上区别很大!
如果在页面上有一些处理控件的JavaScript,在大多数情况下应使用RegisterStartupScript方法,而不是RegisterClientScriptBlock方法。
就是,查找、调用页面控件的时候,就使用 Page.ClientScript.RegisterStartupScript

4.4.3使用Page.ClientScript.RegisterClientScriptInclude
最后一个方法是RegisterClientScriptInclude。许多开发人员都把JavaScript放在.js文件中,这是最好的方式,因为很容易把对JavaScript的修改应用于整个应用程序。使用RegisterClientScriptInclude方法可以在ASP.NET页面上注册脚本文件,如下所示。
string myScript = "myJavaScriptCode.js"
Page.ClientScript.RegisterClientScriptInclude("myKey",myScript);

____________________________________________________________________________________________________________________

From MSDN:

<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  public void Page_Load(Object sender, EventArgs e)
  {
    String csname1 = "PopupScript";
    String csname2 = "ButtonClickScript";

    if (!IsClientScriptBlockRegistered(csname1))
    {
        String cstext1 = "<script type=\"text/javascript\">" +
            "alert('Hello World');</" + "script>";
        RegisterStartupScript(csname1, cstext1); //未使用了DOM元素,和上面说法相矛盾
} if (!IsClientScriptBlockRegistered(csname2)) { StringBuilder cstext2 = new StringBuilder(); cstext2.Append("<script type=\"text/javascript\"> function DoClick() {"); cstext2.Append("Form1.Message.value='Text from client script.'} </"); cstext2.Append("script>"); RegisterClientScriptBlock(csname2, cstext2.ToString()); //使用DOM元素 } } </script> <html > <head> <title>RegisterClientScriptBlock Example</title> </head> <body> <form id="Form1" runat="server"> <input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" /> </form> </body> </html>
原文地址:https://www.cnblogs.com/zhangjun1130/p/1962356.html