腳本管理控件(ScriptManger)是ASP.NET AJAX中很重要的控件,通過使用ScriptManger可以進行整個頁面的局部更新的管理。ScriptManger用來處理頁面上局部更新,同一時候生成相關的代理腳本以便可以通過JavaScript訪問Web Service。
ScriptManger僅僅能在頁面中被使用一次,這也就是說每一個頁面僅僅能使用一個ScriptManger控件,ScriptManger控件用來進行該頁面的全局管理。創建一個ScriptManger控件后系統自己主動生成HTML代碼,演示樣例代碼例如以下所看到的。
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
ScriptManger控件用戶整個頁面的局部更新管理,ScriptManger控件的經常使用屬性例如以下所看到的:
q AllowCustomErrorRedirect:指明在異步回發過程中是否進行自己定義錯誤重定向。
q AsyncPostBackTimeout:指定異步回發的超時事件,默覺得90秒。
q EnablePageMethods:是否啟用頁面方法,默認值為false。
q EnablePartialRendering:在支持的瀏覽器上為UpdatePanel控件啟用異步回發。默認值為True。
q LoadScriptsBeforeUI:指定在瀏覽器中呈現UI之前是否應載入腳本引用。
q ScriptMode:指定要在多個類型時可載入的腳本類型,默覺得Auto。
在AJAX應用中,ScriptManger控件基本不須要配置就行使用。由於ScriptManger控件通常須要同其它AJAX控件搭配使用,在AJAX應用程序中,ScriptManger控件就相當於一個總指揮官,這個總指揮官僅僅是進行指揮,而不進行實際的操作。
1.使用ScriptManger
ScriptManger控件在頁面中相當於指揮的功能,假設須要使用AJAX的其它控件,就必須使用ScriptManger控件而且頁面中僅僅能包括一個ScriptManger控件。演示樣例代碼例如以下所看到的。
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="這是一串字符" Font-Size="12px"></asp:Label>
<br /><br />
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"
ontextchanged="TextBox1_TextChanged"></asp:TextBox>
字符的大小(px)
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
上述代碼創建了一個ScriptManger控件和一個UpdatePanel控件用於AJAX應用開發。在UpdatePanel控件中,包括一個Label標簽控件和一個TextBox文本框控件,當文本框控件的內容被更改時,則會觸發TextBox1_TextChanged事件。TextChanged事件對應的CS代碼例如以下所看到的。
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
try
{
Label1.Font.Size = FontUnit.Point(Convert.ToInt32(TextBox1.Text)); //改變字體
}
catch
{
Response.Write("錯誤"); //拋出異常
}
}
上述代碼通過文本框中的輸入進行字體控制,當輸入一個數字字符串並失去焦點時,則會觸發改事件並執行對應的代碼,執行后如圖16-10和圖16-11所看到的。
圖16-10 輸入字符大小 圖16-11 調整字體大小
2.捕獲異常
當頁面回傳發生異常時,則會觸發AsyncPostBackError事件,演示樣例代碼例如以下所看到的。
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = "回傳發生異常:" + e.Exception.Message;
}
AsyncPostBackError事件的觸發依賴於AllowCustomErrorsRedirct屬性、AsyncPostBackErrorMessage屬性和Web.config中的<customErrors>配置節。當中,AllowCustomErrorsRedirct屬性指明在異步回發過程中是否進行自己定義錯誤重定向,而AsyncPostBackErrorMessage屬性指明當server上發生未處理異常時要發送到client的錯誤消息。演示樣例代碼例如以下所看到的。
protected void Button1_Click(object sender, EventArgs e)
{
throw new ArgumentException(); //拋出異常
}
上述代碼當單擊button控件時,則會拋出一個異常,ScriptManger控件可以捕獲異常並輸出異常,執行代碼后系統會提示異常“回傳發生異常:值不在預期范圍內”。