一、在 html 里直接寫腳本
這個方法是最簡單的,直到如今我寫網頁的時候也幾乎還是使用最多的一種方式。也許一些經常使用 registerclientscriptblock 的人會覺得這種方法老土,不過在我看來,它除了可以減少編譯時間以外,更主要的是可以減少代碼量,可讀性也要好一些,更或許還可以避免一些潛在的錯誤。
但是有些情況下,直接寫的方法是很難完成要求的,比如說當腳本需要依賴我們在代碼中動態生成的控件時,就必須要采用 register 的方法了。
二、使用 literal 控件寫腳本
literal 控件基本上就是寫一段文字或代碼,所以當然也可以寫出客戶端腳本來,實質上這個方法與第一個方法基本相同。以我個人來說,此種方法一般是用在寫控件上。設想一個情況:我們需要根據某種條件來判斷一批具有客戶端腳本事件的控件是否顯示,當然我們可以使用如 panel 一類的容器,可是這些容器多半都要套一個 div 之類的東西,如果在某種情況下我們不希望這時出現 div 呢?當然或許是有更好更漂亮的辦法,只是我都是簡單地用一個 literal 了事。'
三、使用 register script 函數
在 asp.net 1.x 中,page 類提供了 registerclientscriptblock、registeronsubmitstatement 以及 registerstartupscript 函數,使得可以在代碼中進行 clientscript 綁定。不過到了 asp.net 2.0 當中,將這些函數統通移到了一個 clientscriptmanager 類中,并且還添加了類似的 registerclientscriptinclude 函數。在使用這個類的時候,我們可以通過 page.clientscript 來訪問。下面介紹一下這幾個函數的區別。
registerclientscriptblock:這個函數將 clientscript 加到頁面頂部,一般是在緊接著 <form> 標簽的地方。需要注意的是,這個函數中的腳本在寫入頁面甚至執行的時候,頁面的其它元素可能還沒有載入完畢,因此可能不能正確地調用頁面中的元素。這個函數比較常見的應用是一些客戶端事件處理函數。
registerclientscriptinclude:這個函數是 asp.net 2.0 新加入的,它一般用于將一個外部的 clientscript 文件,比如一個 .js 文件鏈接入頁面的時候。除此之外,它和 registerclientscriptblock 基本一樣,包括注意事項。
registerstartupscript:這個函數將 clientscript 加入到頁面的底部,由此帶來的好處自然就是可以正確地處理對頁面元素的引用了。注意這里的腳本將會在頁面的 onload 事件之前執行。一般來說,這里的代碼都是一次性執行的。最常見的比如說是希望頁面載入完畢之后彈出一個消息提示框,又或者在一個有框架的頁面中,需要在一個頁面裝載完畢之后更新另一個頁面的情況。
registeronsubmitstatement:這個函數則是將 clientscript 與 onsubmit 事件綁定起來。
一般的,在使用 registerclientscriptblock 定義了事件處理函數后,我們可以采用以下的代碼將函數與控件關聯起來,這里,假定我們已經定義了一個 confirmdelete 函數:
 string script = @"return confirmdelete();";
string script = @"return confirmdelete();"; btndelete.attributes.add("onclick", script);
btndelete.attributes.add("onclick", script);
新聞熱點
疑難解答
圖片精選