作者: Builder, Tony Patton
儘管ASP.NET提供了一個強壯的平台,但是開發者也不應忽視諸如JavaScript這樣成熟的技術。在這篇文章中,Tony
Patton將向您解釋在Web開發中如何將JavaScript與ASP.NET控制項進行整合。
儘管Web開發平台提供了靈活性和眾多功能,您經常希望或需要依賴現有的技術來完成一項必須的任務,一個很好的例子就是ASP.NET,它提供了一個強大的開發平台,但同時也不應忽略像JavaScript這樣成熟的技術,在這篇文章中,我將向您講解如何將JavaScript程式碼連結到ASP.NET控制項中。
常規方式
通常情況下,當網路應用軟體需要一個彈出視窗或確認視窗或其它的客戶端功能時,您可以建立必要的JavaScript方法,並在需要時呼叫它們。例如,在清單A中包含了一個確認窗口,使用者可以用它來繼續或取消表單的提交。
在選擇了提交(submit)按鈕之後,JavaScript的confirmSubmit方法就被呼叫了,這項確認提示允許使用者繼續進行表單提交(選擇確認)或取消(選擇取消)。
以上程式碼可以按照計畫運作,但是在一個開發平台上工作的時候就沒有這麼簡單了,例如ASP.NET。
ASP.NET的取代選項
ASP.NET支援使用輸入按鈕和文字方塊等HTML元素,但是在ASP.NET自己的開發模型上有一套完成的控制項元素可以提供額外的功能。
將JavaScript附加到ASP.NET上並不像直接的HTML/JavaScript方式那麼簡單,ASP.NET程式設計模式在基本頁面類別中提供了方法來附加腳本程式區塊到頁面元素當中。以下的方法可以用於附加或整合JavaScript到頁面或頁面元素中:
l
RegisterClientScriptBlock:允許您的頁麵包含腳本程式區塊,客戶端腳本在頁面物件<form
runat=
server>元素的起始標籤之後開始運行,腳本程式區塊是作為物件來提交輸出的,所以您必須加上兩個<script>元素標籤。
l
RegisterOnSubmitStatement:允許您指派一個腳本程式區塊/方法到頁面物件OnSubmit事件上。
l
RegisterStartupScript:允許您在頁面中包含腳本程式區塊,與RegisterClientScriptBlock方法類似,此方法在頁面物件<form
runat=
server>元素的結束標籤之前開始運行,腳本程式區塊是作為物件來提交輸出的,所以您必須加上兩個<script>元素標籤。
每個方法都可以接受兩個參數:鍵和腳本,鍵是分配給腳本程式區塊的名稱,鍵值應當是唯一的,透過這個唯一的鍵值,多個伺服器控制的實例可以請求腳本程式區塊,而不必讓腳本再次執行輸出流;第二個參數腳本包含了發送到客戶的實際腳本,它可以是完整的JavaScript程式碼或一個方法的名稱。
這些方法可以使用在實際的ASP.NET頁面程式碼中,無論是VB.NET、C#、J#或任何其它的語言,列表B都展示了用C#編寫的ASP.NET範例程式碼。
JavaScript方法是透過一個字串變數來建構的,它的值傳遞給RegisterClientScriptBlock方法作為第二個參數,實際的方法名稱是透過該物件的Attributes
屬性的Add方法來指派給ASP.NET的按鈕控制項的,JavaScript事件是作為第一個參數傳遞的,而方法名稱則是第二個參數。
而且,你可能會注意到IsStartupScriptRegistered方法的使用,該方法允許您在繼續使用前確認該腳本是否已經被註冊了,有兩個方法可以用於這個問題:
l
IsStartupScriptRegistered:確認客戶端的起始腳本是否已在頁面物件上註冊,其單一參數是腳本的名稱。
l
IsClientScriptBlockRegistered:確認客戶端的腳本程式區塊是否已在頁面物件上註冊,其唯一的參數是腳本的名稱。
另一個解決問題的方法是使用頁面類別的RegisterOnSubmitStatement方法,清單C重複了清單B的功能,但不同之處在於將confirmSubmit方法連接到頁面的提交事件上而不是按鈕的點擊事件上。
這個簡單的範例清楚地說明如何將JavaScript腳本程式區塊和JavaScript腳本包含到ASP.NET頁面的控制項上,如果您使用ASP.NET控制項,這種方法可以幫助您將腳本連結到這些控制項上,但是也可以使用註冊(register)方法來集中一個專案的JavaScript。您可以建立一個包含了腳本的類別檔案並在需要時在頁面中使用它們,這樣就只需在一個位置對這些腳本進行管理,在一個應用軟體中的一個或多個頁面上使用這些腳本就會變得更容易。
集新舊於一身無論在哪種開發平台,您都不太可能放棄使用JavaScript作為客戶端腳本語言,JavaScript都是開發客戶端功能的標準,儘管ASP.NET控制項提供了大量的功能,很多時候您還需要將JavaScript與這些控制項進行"聯姻",幸好ASP.NET頁類別包含了眾多的方法來將腳本程式區塊和方法整合到頁面及其控制項上。