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