多數在展示層應用的伺服器控制項主要由兩個部分組成:伺服器端功能和用戶端功能。伺服器端功能永遠是伺服器控制項的核心,而隨著技術的發展,用戶端功能也逐漸層得越來越重要。只有兩個部分互相配合,才能建立出功能強大、介面豐富的伺服器控制項。本文將討論在伺服器控制項中實現用戶端功能的相關問題,具體內容包括用戶端功能概述、實現簡易用戶端功能、實現複雜用戶端功能,以及部署用戶端檔案的實現方法等內容。
1. 用戶端功能簡介
在Web編程中,用戶端功能傳統上是由Web頁開發人員負責,並且不被封裝在伺服器組件中。ASP.NET脫離了這一範疇並使伺服器控制項能夠發出用戶端指令碼,從而使伺服器控制項能夠將用戶端處理與伺服器端處理結合起來。實現用戶端功能對於提高伺服器控制項的互動性和可擴充性的意義重大。例如,常見的TreeView、TabStrip、ToolBar控制項等,這些優秀的伺服器控制項具有很強的互動性和豐富的使用者介面,而這些特徵的實現與用戶端功能是密不可分的。
實現用戶端功能的技術主要是用戶端指令碼(JavaScript、VBScript等)和DHTML。因此,作為一名合格的開發人員必須具有熟練應用這些技術的能力。除此之外,還要掌握將用戶端功能與伺服器控制項密切結合的方法。這些內容包括:實現簡易用戶端功能、實現複雜用戶端功能、部署用戶端指令碼檔案的方法。
2. 實現簡易用戶端功能
如果自訂伺服器控制項的用戶端功能比較簡單,例如,僅僅是快顯視窗或者改變背景顏色等,那麼對於這種情況,通過不使用單獨的用戶端指令碼檔案封裝,而是直接在控制項呈現中實現。其實現的關鍵是在控制項的Attributes中添加適當的用戶端處理常式。以下執行個體說明從System.Web.UI.WebControls.Button類派生的控制項MyClickButton,它為用戶端單擊事件提供事件處理常式。請看下面的代碼:
public class MyClickButton : Button{
//相關代碼
......
protected override void AddAttributesToRender(HtmlTextWriter writer) {
base.AddAttributesToRender(writer);
writer.AddAttribute("onclick", "window.confirm('謝謝您! ');");
}
}
如果讀者已經閱讀了前面有關控制項呈現的文章,那麼很容易理解以上代碼。以上代碼重寫了AddAttributesToRender方法,它為MyClickButton控制項定義了一個名為onclick的Attribute,其值指示在用戶端彈出一個包含自訂資訊的確認視窗。如果讀者所開發的伺服器控制項的用戶端功能都比較簡單,那麼可以嘗試利用重寫AddAttributesToRender的方法予以實現。
下面是為使用MyClickControl控制項而建立的ASPX頁面原始碼。
<%@ Page Language = "C#" %>
<%@ Register TagPrefix="Custom" Namespace="MyControls" Assembly = "MyControls" %>
<html>
<body>
<form runat=server>
請點擊下面的按鈕
<Custom:MyClickButton Id = "demo" runat=server/>
<br>
</form>
</body>
</html>
當使用者點擊MyClickControl控制項時,立刻彈出一個包含提示資訊的確認視窗。需要注意的是彈出確認視窗並不是由於頁面回傳,而是使用者激發用戶端處理常式的結果。當點擊"確定"按鈕之後,才會發生頁面回傳。