ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用來處理頁面上的所有組件以及頁面局部更新,生成相關(guān)的客戶端代理腳本以便能夠在JavaScript中訪問Web Service,所有需要支持ASP.NET AJAX的ASP.NET頁面上有且只能有一個ScriptManager控件。在ScriptManager控件中我們可以指定需要的腳本庫,或者指定通過JS來調(diào)用的Web Service,以及調(diào)用AuthenticationService和ProfileService,還有頁面錯誤處理等。
主要內(nèi)容
1.控件概述
2.一個簡單的示例
3.客戶端腳本模式
4.錯誤處理
5.Services屬性
6.Scripts屬性
一.控件概述
ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用來處理頁面上的所有組件以及頁面局部更新,生成相關(guān)的客戶端代理腳本以便能夠在JavaScript中訪問Web Service,所有需要支持ASP.NET AJAX的ASP.NET頁面上有且只能有一個ScriptManager控件。在ScriptManager控件中我們可以指定需要的腳本庫,或者指定通過JS來調(diào)用的Web Service,還可以指定頁面錯誤處理等。
使用<asp:ScriptManager/>來定義一個ScriptManager,簡單的ScriptManager定義形式:
屬性/方法
描述
AllowCustomError
和Web.config中的自定義錯誤配置區(qū)<customErrors>相聯(lián)系,是否使用它,默認(rèn)值為true
AsyncPostBackErrorMessage
異步回傳發(fā)生錯誤時的自定義提示錯誤信息,
AsyncPostBackTimeout
異步回傳時超時限制,默認(rèn)值為90,單位為秒
EnablePartialRendering
是否支持頁面的局部更新,默認(rèn)值為True,一般不需要修改
ScriptMode
指定ScriptManager發(fā)送到客戶端的腳本的模式,有四種模式:Auto,Inherit,Debug,Release,默認(rèn)值為Auto,后面會仔細(xì)說到。
ScriptPath
設(shè)置所有的腳本塊的根目錄,作為全局屬性,包括自定義的腳本塊或者引用第三方的腳本塊。如果在Scripts中的<asp:ScriptReference/>標(biāo)簽中設(shè)置了Path屬性,它將覆蓋該屬性。
OnAsyncPostBackError
異步回傳發(fā)生異常時的服務(wù)端處理函數(shù),在這里可以捕獲一場信息并作相應(yīng)的處理。
OnResolveScriptReference
指定ResolveScriptReference事件的服務(wù)器端處理函數(shù),在該函數(shù)中可以修改某一條腳本的相關(guān)信息如路徑、版本等。
二.一個簡單的示例
這個例子其實是UpdatePanel示例,在頁面中加入了日期控件和一個下拉框,根據(jù)下拉框選擇的不同,日期控件背景變?yōu)椴煌念伾?。示例代碼如下:
三.客戶端腳本模式
在前面我們提到了ScriptMode屬性指定ScriptManager發(fā)送到客戶端的腳本的模式,它有四種模式:Auto,Inherit,Debug,Release,默認(rèn)值為Auto。
1.Auto:它會根據(jù)Web站點的Web.config配置文件來決定使用哪一種模式,只有當(dāng)配置文件中retail屬性設(shè)置為false:
或者頁面中的Debug指令設(shè)為true的時候會使用Debug版本,其他的情況都會使用Release版本。
2.Inherit:應(yīng)該是通過程序設(shè)置ScriptMode的時候,等同于Auto?(不太了解)
3.Debug:客戶端腳本使用Debug版本,除非retail屬性設(shè)為true。
4.Release:客戶端腳本使用Release版本,除非retail屬性設(shè)為false。
四.錯誤處理
在頁面回傳時如果發(fā)生了異常AsyncPostBackError事件將被觸發(fā),錯誤信息的處理依賴于AllowCustomErrors屬性、AsyncPostBackErrorMessage屬性和Web.config中的<customErrors>配置區(qū)。下面看一個簡單的錯誤處理例子,在AsyncPostBackError事件中捕獲到異常信息并設(shè)置AsyncPostBackErrorMessage屬性。
運行后時界面:
發(fā)生異常信息:
五.Services屬性
Services用來管理對WebService的調(diào)用,通過<asp:ServiceReference>標(biāo)簽可以在Services中注冊一個WebService,在運行時ScriptManager將為每一個ServiceReference對象生成一個客戶端代理,<asp:ServiceReference>標(biāo)簽一個很重要的屬性是Path,用來指定WebService的路徑,如下所示:
看一個簡單的調(diào)用WebService的例子:
WebService如下,注意在WebServiceSample上加ScriptService特性:
ASPX頁面:
運行后效果如下:
當(dāng)然了也可以在運行時動態(tài)的在Services中加入ServiceReference,下面看一個運行時動態(tài)加入ServiceReference的例子:
可以看到運行后和在ScriptManager中直接加入的效果是一樣的。
六.Scripts屬性
關(guān)于Scripts屬性到后面具體再說吧,最主要的屬性有Path指定腳本的路徑,ScriptMode指定客戶端腳本的模式,它會覆蓋ScriptManager中的ScriptMode屬性,還有一個屬性是IgnoreScriptPath,指定是否忽略掉ScriptManager中的ScriptPath屬性。