JavaScript與ASP.NET控件整合
盡管ASP.NET提供了一個強壯的平臺,但是開發(fā)者也不應忽視諸如JavaScript這樣成熟的技術(shù)。在這篇文章中,Tony Patton將向您解釋在Web開發(fā)中如何將JavaScript與ASP.NET控件進行整合。
盡管Web開發(fā)平臺提供了靈活性和眾多功能,您經(jīng)常希望或需要依賴現(xiàn)有的技術(shù)來完成一項必須的任務,一個好的例子就是ASP.NET,它提供了一個強大的開發(fā)平臺,但是同時也不應忽略像JavaScript這樣成熟的技術(shù),在這篇文章中,我將向您講解如何將JavaScript代碼聯(lián)結(jié)到ASP.NET控件中。
常規(guī)方式
通常情況下,當一個Web應用軟件需要一個彈出窗口或確認窗口或其它的客戶端功能時,您可以創(chuàng)建必需的JavaScript方法,并在需要時調(diào)用它們。例如,在列表A中包含了一個確認窗口,用戶可以用它來繼續(xù)或取消表單的提交。
在選擇了提交(submit)按鈕之后,JavaScript的confirmSubmit方法就被調(diào)用了,這一確認提示允許用戶繼續(xù)進行表單提交(選擇確認)或取消(選擇取消)。
以上代碼可以按照計劃工作,但是在一個開發(fā)平臺上工作的時候就沒有這么簡單了,比如ASP.NET。
ASP.NET的替換選項
ASP.NET支持使用諸如輸入按鈕和文本框等HTML元素,但是在ASP.NET自己的開發(fā)模型上有一套完成的控件元素可以提供額外的功能。
將JavaScript附加到ASP.NET上并不像直接的HTML/JavaScript方式那么簡單,ASP.NET編程模式在基本頁面類中提供了方法來附加腳本程序塊到頁面元素當中。以下的方法可以用于附加或整合JavaScript到頁面或頁面元素中:
RegisterClientScriptBlock:允許您的頁面含有腳本程序塊,客戶端腳本在頁面對象form runat= server>元素的起始標簽之后開始運行,腳本程序塊是作為對象來提交輸出的,所以您必需加上兩個script>元素標簽。
RegisterOnSubmitStatement:允許您指派一個腳本程序塊/方法到頁面對象OnSubmit事件上。
RegisterStartupScript:允許您在頁面中包含腳本程序塊,與RegisterClientScriptBlock方法類似,這一方法在頁面對象form runat= server>元素的結(jié)束標簽之前開始運行,腳本程序塊是作為對象來提交輸出的,所以您必需加上兩個script>元素標簽。
每個方法都可以接受兩個參數(shù):鍵和腳本,鍵是分配給腳本程序塊的名稱,鍵值應當是***的,通過這一***的鍵值,多個服務器控制的實例可以請求腳本程序塊,而不必讓腳本再次運行輸出流;第二個參數(shù)腳本包含了發(fā)送到客戶的實際腳本,它可以是完整的JavaScript代碼或一個方法的名稱。
這些方法可以使用在實際的ASP.NET頁面代碼中,無論是VB.NET、C#、J#或任何其它的語言,列表B展示了用C#編寫的ASP.NET示例代碼。
JavaScript方法是通過一個字符串變量來構(gòu)建的,它的值傳遞給RegisterClientScriptBlock方法作為第二個參數(shù),實際的方法名稱是通過該對象的Attributes 屬性的Add方法來分配給ASP.NET的按鈕控件的,JavaScript事件是作為***個參數(shù)傳遞的,而方法名稱則是第二個參數(shù)。
而且,你可能會注意到IsStartupScriptRegistered方法的使用,該方法允許您在繼續(xù)使用前確認該腳本是否已經(jīng)被注冊了,有兩個方法可以用于這個問題:
IsStartupScriptRegistered:確認客戶端的起始腳本是否已經(jīng)在頁面對象上注冊,其單一參數(shù)是腳本的名稱。
IsClientScriptBlockRegistered:確認客戶端的腳本程序塊是否已經(jīng)在頁面對象上注冊,其***的參數(shù)是腳本的名稱。
另一個解決問題的方法就是使用頁面類的RegisterOnSubmitStatement方法,列表C重復了列表B的功能,但是不同之處在于將confirmSubmit方法連接到頁面的提交事件上而不是按鈕的點擊事件上。
這個簡單的例子清晰地說明了如何將JavaScript腳本程序塊和JavaScript腳本包含到ASP.NET頁面的控件上,如果您使用ASP.NET控件,這種方法可以幫助您將腳本聯(lián)系到這些控件上,但是也可以使用注冊(register)方法來集中一個項目的JavaScript。您可以創(chuàng)建一個包含了腳本的類文件并在需要時在頁面中使用它們,這樣就只需在一個位置對這些腳本進行管理,在一個應用軟件中的一個或多個頁面上使用這些腳本就會變得更容易。
集新舊于一身
無論在哪種開發(fā)平臺,您都不太可能放棄使用JavaScript作為客戶端腳本語言,JavaScript都是開發(fā)客戶端功能的標準,盡管ASP.NET控件提供了大量的功能,很多時候您還需要將JavaScript與這些控件進行“聯(lián)姻”,幸好ASP.NET頁面類包含了眾多的方法來將腳本程序塊和方法集成到頁面及其控件上。
【編輯推薦】