本文是翻譯 http://www.asp.net/上推出了最新的AJAX系列教程.由於本人第一次進行翻譯,有翻譯不準,不正確的地方,望大家批評指正 .
笑Q
在上一篇文章中.我們通過簡單小例子介紹了頁面的局部重新整理.在這篇文章中.我們介紹下MicroSoft AJAX最重要控制項之一的ScriptMananger的相關屬性和方法
1.用戶端的相關屬性
屬性 |
類型 |
描述 |
AllowCustomeErrorsRedirect |
Bool |
定義是否使用webconfig中自訂的錯誤處理 |
AsyncPostBackErrorMessage |
String |
定義當error發生的時候在用戶端轉譯的錯誤資訊 |
AsyncPostBackTimeOut |
Int32 |
擷取或設定一個值,該值指示在未收到響應時非同步回傳逾時前的時間(以秒為單位)。 |
EnableScriptGlobalization |
Bool |
擷取或設定一個值,該值指示 ScriptManager 控制項是否呈現支援分析地區性特定的資訊並設定其格式的指令碼。 |
EnableScriptLocalization |
Bool |
擷取或設定一個值,該值指示 ScriptManager 控制項是否呈現指令檔的語言版本。 |
ScriptLoadTimeout |
Int32 |
定義裝在用戶端指令碼的最大時間. |
ScriptMode |
Enum (Auto, Debug, Release, Inherit) |
擷取或設定一個值,以指定是呈現用戶端指令碼庫的調試版本還是發布版本。 |
ScriptPath |
String |
擷取或設定位置的根路徑,該位置用來建立指向 ASP.NET AJAX 和自訂指令檔的路徑。 |
2):背景相關屬性
屬性 |
類型 |
描述 |
AuthenticationService |
AuthenticationService-Manager |
擷取與當前 ScriptManager 執行個體關聯的 AuthenticationServiceManager 對象。 |
IsDebuggingEnabled |
Bool |
擷取一個指示是否呈現用戶端指令碼庫的調試版本的值 |
IsInAsyncPostback |
Bool |
擷取一個指示是否在部分呈現模式下執行當前回傳的值。 |
ProfileService |
ProfileServiceManager |
擷取與當前 ScriptManager 執行個體關聯的 ProfileServiceManager 對象。 |
Scripts |
Collection<ScriptReference> |
擷取一個包含 ScriptReference 對象(每個對象代表一個呈現給用戶端的指令檔)的 ScriptReferenceCollection 對象。 |
Services |
Collection<ServiceReference> |
擷取一個 ServiceReferenceCollection 對象,該對象包含 ASP.NET 在用戶端上針對 AJAX 功能而公開的每個 Web 服務的 ServiceReference 對象。 |
SupportsPartialRendering |
Bool |
擷取一個指示用戶端是否支援部分頁面呈現的值。 |
3)scriptManager的相關方法
Name |
Type |
描述 |
SetFocus(string) |
Void |
請求結束時,將瀏覽器焦點設定為指定控制項。 |
4)ScriptManager的子項
標籤 |
描述 |
<AuthenticationService> |
提供 ASP.NET authentication service.的詳細執行個體 |
<ProfileService> |
提供 ASP.NET profiling service.的詳細執行個體 |
<Scripts> |
提供額外的Script指令碼引用 |
<asp:ScriptReference> |
指定特別的Script指令碼引用 |
<Service> |
擷取一個 ServiceReferenceCollection 對象,該對象包含 ASP.NET 在用戶端上針對 AJAX 功能而公開的每個 Web 服務的 ServiceReference 對象。 |
<asp:ServiceReference> |
|
ScriptManager控制項是ASP.NET AJAX Extensions的核心.它提供了訪問指令碼庫(包括其他擴充的指令碼類型系統)的訪問能力.它支援網頁的部分呈現功能,同時也提供了對其他ASP.NET WebService(像Authentication ,Profiling,其他WebServices)的支援. 另外.ScriptManager控制項支援就用戶端指令碼全球化和本地化的支援.
提供可以選擇和追加的指令碼
儘管ASP.NET 2.0 AJAX Extensions 在調試和發行的版本中包含整個指令碼代碼. 開發人員可以像註冊其他的指令碼一樣自由的設定自訂的指令檔.
為了重載預設的內建指令碼.你可以在ScriptManager類中通過註冊 ResolveScriptReference 事件來實現.當這個方法被調用的時候.事件處理器就會自動的改變Script的路徑,ScriptManager 就會發送不同的或者你自訂的指令碼的副本到用戶端/
UpdatePanels的自訂錯誤處理
儘管更新是由UpdatePanel 控制項觸發的.但是錯誤的處理和自訂錯誤資訊還是通過ScriptManager控制項來處理的.這個是通過頁面上的AsyncPostBackError來呈現異常處理邏輯的.你可以通過AsyncPostBackErrorMessage屬性來設定顯示的錯誤資訊.
當然你可以通過用戶端的自訂錯誤處理機制.
例如:Listing 5: Client-side script to display custom errors
<script type=”text/javascript”>
<!--
Sys.WebForms.PageRequestManager.getInstance().add_EndRequest( Request_End);
function
Request_End(sender, args)
{
if (args.get_error() !=
undefined)
{
var errorMessage =
“”;
if (args.get_response().get_statusCode() == “200
”)
{
errorMessage =
args.get_error().message;
}
else
{
// the server wasn’t the problem errorMessage = “An unknown error occurred”;
}
// do something with the errorMessage here.
// now make sure the system knows we handled the error.
args.set_errorHandled(true
);
}
}
//-->
</script>
方法相當簡單.上面的script指令碼註冊了在非同步呼叫結束時的回調.它會檢查是否有錯誤發生.如果有,擷取錯誤的詳細資料並通知runtime錯誤已經被自訂指令碼處理.