ScriptManager 控制項概觀
更新:2007 年 11 月
ScriptManager 控制項可管理具備 AJAX 能力之 ASP.NET Web 網頁的用戶端指令碼。根據預設,ScriptManager 控制項會向網頁註冊 Microsoft AJAX Library 的指令碼。這樣可讓用戶端指令碼使用型別系統擴充,並支援如網頁局部呈現與 Web 服務呼叫等功能。
此主題包括下列章節:
案例
背景
程式碼範例
類別參考
案例
您必須在網頁上使用 ScriptManager 控制項,才能啟用 ASP.NET 的下列 AJAX 功能:
Microsoft AJAX Library 的用戶端指令碼功能,以及您要傳送到瀏覽器的任何自訂指令碼。如需詳細資訊,請參閱使用 Microsoft AJAX Library 建立自訂用戶端指令碼。
網頁局部呈現,此功能可在不執行回傳的情況下單獨重新整理頁面的特定區域。ASP.NET UpdatePanel、UpdateProgress 與 Timer 控制項需要 ScriptManager 控制項,才能支援網頁局部呈現。
Web 服務的 JavaScript Proxy 類別,它可讓您使用用戶端指令碼來存取 Web 服務,以及 ASP.NET 網頁中特別標示的方法。它是藉由公開 (Expose) Web 服務與網頁方法為強型別 (Strongly Typed) 物件而完成上述動作。
用以存取 ASP.NET 驗證 (Authentication)、設定檔與角色應用程式服務的 JavaScript 類別。
背景
當頁面包含一個或多個 UpdatePanel 控制項時,ScriptManager 控制項可管理瀏覽器中的網頁局部呈現。控制項會與頁面生命週期互動,以更新 UpdatePanel 控制項內的網頁局部。如需詳細資訊,請參閱網頁局部呈現概觀。
ScriptManager 控制項的 EnablePartialRendering 屬性決定頁面是否參與網頁局部更新。EnablePartialRendering 屬性的預設值為 true。因此,當您加入 ScriptManager 控制項至頁面時,預設會啟用網頁局部呈現。如需如何使用 UpdatePanel 控制項以搭配 ScriptManager 控制項的詳細資訊,請參閱UpdatePanel 控制項簡介與使用多個 UpdatePanel 控制項建立簡單的 ASP.NET 頁面。
處理網頁局部呈現錯誤
在網頁局部呈現期間,您可以執行下列動作以處理錯誤:
設定 AllowCustomErrorsRedirect 屬性。這樣可決定當非同步回傳期間發生錯誤時,如何使用 Web.config 檔的自訂錯誤區段。
處理 ScriptManager 控制項的 AsyncPostBackError 事件,當非同步回傳期間發生頁面錯誤時會引發此事件。
設定 AsyncPostBackErrorMessage 屬性,這是傳送到瀏覽器的錯誤訊息。
使用型別系統擴充
Microsoft AJAX Library 加入型別系統擴充至 JavaScript,以提供字串與陣列的命名空間、繼承、介面、列舉型別 (Enumeration)、反映與 Helper 函式。這些擴充在用戶端指令碼中提供的功能就如同 .NET Framework 一樣。它們可讓您以結構化方式撰寫具備 AJAX 能力的 ASP.NET 應用程式,以提高可維護性並使其更容易加入與分層功能。將 ScriptManager 控制項加入至 ASP.NET Web 網頁可自動包含型別系統擴充,因此您可以在用戶端指令碼中使用該程式庫。如需詳細資訊,請參閱使用 Microsoft AJAX Library 建立自訂用戶端指令碼。
註冊自訂指令碼
使用 ScriptManager 控制項可管理您為參與網頁局部更新之控制項所建立的資源。這裡所謂的資源包括指令碼、樣式、隱藏欄位與陣列。ScriptManager 控制項的 Scripts 集合包含可供瀏覽器使用之每個指令碼的 ScriptReference 物件。您可以使用宣告方式或程式設計方式指定該指令碼。
ScriptManager 控制項也公開註冊方法,以便您以程式設計方式用來管理用戶端指令碼與隱藏欄位。當您註冊支援網頁局部更新的指令碼或隱藏欄位時,必須呼叫 ScriptManager 控制項的註冊方法 (若要註冊非網頁局部更新所需的指令碼,您可以使用 ClientScriptManager 類別的方法)。
注意事項: |
---|
頁面上使用 ScriptManager 控制項註冊的任何指令碼與所有事件處理指令碼都必須位於該頁面上的 form 項目內。否則,無法註冊或執行該指令碼。 |
如需 ClientScriptManager 控制項註冊方法清單,請參閱使用 Microsoft AJAX Library 建立自訂用戶端指令碼與 ClientScriptManager 類別概觀。
註冊 Web 服務
若要註冊從具備 AJAX 能力之 ASP.NET 網頁呼叫的 Web 服務,您必須將 Web 服務加入至 ScriptManager 控制項的 Services 集合,以註冊該服務。ASP.NET AJAX 架構會為 Services 集合中的每個 ServiceReference 物件產生用戶端 Proxy 物件。Proxy 類別與其強型別成員可簡化從用戶端指令碼使用 Web 服務的方式。
您可以利用程式設計方式,將 ServiceReference 物件加入至 Services 集合,以便在執行階段註冊 Web 服務。如需詳細資訊,請參閱ASP.NET AJAX 中的 Web 服務。
從用戶端指令碼使用驗證、設定檔與角色服務
Microsoft AJAX Library 包含 Proxy 類別,您可以使用這些類別直接從 JavaScript 呼叫 ASP.NET 2.0 表單驗證、設定檔與角色應用程式服務。若要使用自訂的驗證服務,您可以使用 ScriptManager 控制項來註冊該服務。如需詳細資訊,請參閱搭配 ASP.NET AJAX 使用表單驗證、搭配 ASP.NET AJAX 使用設定檔資訊和搭配 ASP.NET AJAX 使用角色資訊。
ScriptManagerProxy 類別
您只能將 ScriptManager 控制項的一個執行個體加入至頁面中。頁面可以直接包含控制項,或者控制項可以間接位於巢狀元件 (例如,使用者控制項、主版頁面的內容頁或巢狀主版頁面) 內部。若頁面已包含 ScriptManager 控制項,但巢狀或父元件需要 ScriptManager 控制項的其他功能,則元件可以包含 ScriptManagerProxy 控制項。例如,ScriptManagerProxy 控制項可讓您加入巢狀元件特定的指令碼與服務。
程式碼範例
使用 Microsoft AJAX Library 建立自訂用戶端指令碼
建立擴充項控制項讓用戶端行為與 Web 伺服器控制項產生關聯
類別參考
Class |
描述 |
---|---|
將指令碼資源提供給瀏覽器使用的伺服器控制項,它包含可啟用網頁局部呈現的 Microsoft AJAX Library 與其他功能。 |
|
可讓巢狀元件加入指令碼與服務參考的伺服器控制項 (若頁面已包含 ScriptManager 控制項)。 |