ASP.NET 2.0 - JavaScript Combine

摘要:ASP.NET 2.0 - JavaScript Combine

<%@ Page Language="VB" %>

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, _
      ByVal e As System.EventArgs)
        Button1.Attributes.Add("onclick", _
           "javascript:alert('ALERT ALERT!!!')")
    End Sub
</script>

--
設定控制項焦點
ASP.NET 2.0 現在可以將 (游標) 焦點設定為其中一個 HTML 表單元件。ASP.NET 2.0 推出前,您必須自行部署 JavaScript 才能達到同樣的效果。舉例來說,如果您的 ASP.NET 1.x 網頁具有數個文字方塊,您必須在網頁的 <body> 標籤中部署下列指令碼,以便在網頁載入時將焦點設定為第一個 TextBox 控制項。

<body onload="document.forms[0]['TextBox1'].focus();">
--
Page.ClientScript.RegisterStartupScript() 方法
第一種可行的方法是採取其中一種適用這個用途的 .NET 類別,來註冊指令碼區塊。第一個為 RegisterStartupScript 方法。如果您希望 JavaScript 函式在網頁載入的同時一併啟用,這個類別最適合。舉例來說,您可以在 Visual Studio 2005 建立一個包含兩個按鈕的 ASP.NET 網頁。以 Button1 和 Button2 作為這兩個按鈕的 ID,然後將下列指令碼加入 Page_Load 事件:

Visual Basic

Page.ClientScript.RegisterStartupScript(Me.GetType(), "MyScript", _
   "function AlertHello() { alert('Hello ASP.NET'); }", True)

Button1.Attributes("onclick") = "AlertHello()"
Button2.Attributes("onclick") = "AlertHello()"
C#

RegisterStartupScript 方法有兩種可能的建構方式,如下所述:

RegisterStartupScript (類別, 鍵值, 指令碼)
RegisterStartupScript (類別, 鍵值, 指令碼, 指令碼標籤規格)
上一個例子中,您將類別指定為 Me.GetType()、指定鍵值、要包含的指令碼,然後將 Boolean 值設定指定為 True,這樣 .NET 就會將指令碼的 <script> 標籤自動置入 ASP.NET 網頁。

Page.ClientScript.RegisterClientScriptBlock() 方法
現在咱們來使用 Page.ClientScript.RegisterClientScriptBlock 方法,建立一個更理想的按鈕變換範例。先前介紹的變換按鈕範例有一個問題:使用者的滑鼠游標停駐在按鈕圖形上時,必須向伺服器個別發出要求,取得變換圖形。比較理想的作法是將按鈕的變換圖形事先下載並存放在瀏覽器的快取中,這樣使用者把游標停駐在按鈕上時,圖形會立即顯現。要實現這種作法,得先建構一個 JavaScript 函式。下面範例介紹 JavaScript 函式,以及如何使用 RegisterClientScriptBlock 方法將函式擷取至網頁中。這個範例中,程式碼後置只需要有 Page_Load 事件,搭配 ImageButton 伺服器控制項的按鈕事件即可

--
Page.ClientScript.RegisterStartupScript 和 Page.ClientScript.RegisterClientScriptBlock 之間的差異
剛才介紹過的兩種方法都能將 JavaScript 函式至入 ASP.NET 網頁,但這兩者到底有何不同呢?主要的不同之處在於 RegisterStartupScript 方法會將 JavaScript 置入 ASP.NET 網頁中,位置是結束 </form> 元件的正上方。而 RegisterClientScriptBlock 方法則是把 JavaScript 直接放在網頁的 <form> 元件開頭處。但這兩者間有何差異呢?接下來您會瞭解其中的差異可大了。
 

 

~X-Man~