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>1、使用Page.ClientScript.RegisterClientScriptBlock
RegisterClientScriptBlock方法可以把JavaScript函數放在頁面的頂部。
也就是說,該指令碼用於在瀏覽器中啟動頁面。