文章目錄
- 19.10.2 使用Page.ClientScript.RegisterStartupScript
19.10.2 使用Page.ClientScript.RegisterStartupScripthttp://book.51cto.com 2009-07-01 09:08 張敏/丁峰譯 清華大學出版社 我要評論(0)
- 摘要:《Visual Basic 2008進階編程(第5版)》第19章使用ASP.NET 3.5,本章介紹許多基礎知識,討論與整個ASP.NET應用程式相關的問題以及建立、部署這些新應用程式的選項。本節為大家介紹使用Page.ClientScript.RegisterStartupScript。
19.10.2 使用Page.ClientScript.RegisterStartupScript
RegisterStartupScript方法類似於RegisterClientScriptBlock方法,主要區別是RegisterStartup Script方法把指令碼放在ASP.NET頁面的底部,而不是頂部。實際上,RegisterStartupScript方法與RegisterClientScriptBlock方法採用相同的結構:
RegisterStartupScript(type, key, script)
RegisterStartupScript(type, key, script, script tag specification)
是什麼使指令碼在頁面的不同地方註冊?其實區別很多。如果JavaScript代碼處理的是頁面上的一個控制項,則大多數情況下應使用RegisterStartupScript方法,而不是RegisterClientScript Block方法。例如,使用下面的代碼建立一個頁面,其中包含一個簡單的<asp:TextBox>控制項,其預設值是Hello ASP.NET:
- <asp:TextBox ID="TextBox1" Runat="server">Hello ASP.NET</asp:TextBox>
接著,使用RegisterClientScriptBlock方法把一個指令碼放在頁面上,以利用TextBox1控制項中的值:
- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
- Dim myScript As String = "alert(document.forms[0]['TextBox1'].value);"
- Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "myKey", _
- myScript,True)
- End Sub
運行這個頁面,會產生19-17所示的JavaScript錯誤。
發生錯誤是因為JavaScript函數在文字框控制項放在螢幕上之前就引發了。因此,JavaScript函數找不到TextBox1,頁面就會拋出一個錯誤。現在試試RegisterStartupScript方法:
- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
- Dim myScript As String = "alert(document.forms[0]['TextBox1'].value);"
- Page.ClientScript.RegisterStartupScript(Me.GetType(), "myKey", _
- myScript, True)
- End Sub
這個方法把JavaScript函數放在ASP.NET頁面的底部,所以JavaScript函數執行時,會找到TextBox1元素,按照期望的那樣執行,19-18所示。