使用ScriptManager控件
它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAX的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,以及调用AuthenticationService和ProfileService,还有页面错误处理等。
主要内容
1.控件概述
2.一个简单的示例
3.客户端脚本模式
4.错误处理
5.Services属性
6.Scripts属性
一.控件概述
ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAX的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。
使用<asp:ScriptManager/>来定义一个ScriptManager,简单的ScriptManager定义形式:
1 <asp:ScriptManager ID="ScriptManager1"
2
3 runat="server">
4
5 <AuthenticationService Path="" />
6
7 <ProfileService LoadProperties="" Path="" />
8
9 <Scripts>
10
11 <asp:ScriptReference/>
12
13 </Scripts>
14
15 <Services>
16
17 <asp:ServiceReference />
18
19 </Services>
20
21 </asp:ScriptManager>
ScriptManager属性和方法如下:
属性/方法 | 描述 |
AllowCustomError | 和Web.config中的自定义错误配置区<customErrors>相联系,是否使用它,默认值为true |
AsyncPostBackErrorMessage | 异步回传发生错误时的自定义提示错误信息, |
AsyncPostBackTimeout | 异步回传时超时限制,默认值为90,单位为秒 |
EnablePartialRendering | 是否支持页面的局部更新,默认值为True,一般不需要修改 |
ScriptMode | 指定ScriptManager发送到客户端的脚本的模式,有四种模式:Auto,Inherit,Debug,Release,默认值为Auto,后面会仔细说到。 |
ScriptPath | 设置所有的脚本块的根目录,作为全局属性,包括自定义的脚本块或者引用第三方的脚本块。如果在Scripts中的<asp:ScriptReference/>标签中设置了Path属性,它将覆盖该属性。 |
OnAsyncPostBackError | 异步回传发生异常时的服务端处理函数,在这里可以捕获一场信息并作相应的处理。 |
OnResolveScriptReference | 指定ResolveScriptReference事件的服务器端处理函数,在该函数中可以修改某一条脚本的相关信息如路径、版本等。 |
二.一个简单的示例
这个例子其实是UpdatePanel示例,在页面中加入了日期控件和一个下拉框,根据下拉框选择的不同,日期控件背景变为不同的颜色。示例代码如下:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2
3
4
5 <script runat="server">
6
7 void DropDownSelection_Change(Object sender, EventArgs e)
8
9 {
10
11 Calendar1.DayStyle.BackColor =
12
13 System.Drawing.Color.FromName(ColorList.SelectedItem.Value);
14
15 }
16
17 </script>
18
19
20
21 <html xmlns="http://www.w3.org/1999/xhtml">
22
23 <head id="Head1" runat="server">
24
25 <title>ScriptManager Example</title>
26
27 </head>
28
29 <body>
30
31 <form id="form1" runat="server">
32
33 <div>
34
35 <asp:ScriptManager ID="ScriptManager1"
36
37 runat="server">
38
39 </asp:ScriptManager>
40
41 <asp:UpdatePanel ID="UpdatePanel1"
42
43 runat="server">
44
45 <ContentTemplate>
46
47 <asp:Calendar ID="Calendar1"
48
49 ShowTitle="True"
50
51 runat="server" />
52
53 <div>
54
55 Background:
56
57 <br />
58
59 <asp:DropDownList ID="ColorList"
60
61 AutoPostBack="True"
62
63 OnSelectedIndexChanged="DropDownSelection_Change"
64
65 runat="server">
66
67 <asp:ListItem Selected="True" Value="White">
68
69 White </asp:ListItem>
70
71 <asp:ListItem Value="Silver">
72
73 Silver </asp:ListItem>
74
75 <asp:ListItem Value="DarkGray">
76
77 Dark Gray </asp:ListItem>
78
79 <asp:ListItem Value="Khaki">
80
81 Khaki </asp:ListItem>
82
83 <asp:ListItem Value="DarkKhaki"> D
84
85 ark Khaki </asp:ListItem>
86
87 </asp:DropDownList>
88
89 </div>
90
91 </ContentTemplate>
92
93 </asp:UpdatePanel>
94
95 <br />
96
97 </div>
98
99 </form>
100
101 </body>
102
103 </html>
三.客户端脚本模式
在前面我们提到了ScriptMode属性指定ScriptManager发送到客户端的脚本的模式,它有四种模式:Auto,Inherit,Debug,Release,默认值为Auto。
1.Auto:它会根据Web站点的Web.config配置文件来决定使用哪一种模式,只有当配置文件中retail属性设置为false:
<system.web>
<deployment retail="false" />
</system.web>
或者页面中的Debug指令设为true的时候会使用Debug版本,其他的情况都会使用Release版本。
<%@ Page Language="C#" Debug="true"
AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
四.错误处理
在页面回传时如果发生了异常AsyncPostBackError事件将被触发,错误信息的处理依赖于AllowCustomErrors属性、AsyncPostBackErrorMessage属性和Web.config中的<customErrors>配置区。
五.Services属性
Services用来管理对WebService的调用,通过<asp:ServiceReference>标签可以在Services中注册一个WebService,在运行时ScriptManager将为每一个ServiceReference对象生成一个客户端代理,<asp:ServiceReference>标签一个很重要的属性是Path,用来指定WebService的路径,如下所示:
<asp:ScriptManager ID="SM1" runat="server">
<Services>
<asp:ServiceReference Path="Service.asmx"/>
</Services>
</asp:ScriptManager>