ASP.NET AJAX入门系列(2):使用ScriptManager控件

作者:TerryLee
ScriptManager
控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAXASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,以及调用AuthenticationServiceProfileService,还有页面错误处理等。

 

主要内容

1.控件概述

2.一个简单的示例

3.客户端脚本模式

4.错误处理

5Services属性

6Scripts属性

 

一.控件概述

ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAXASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。

使用<asp:ScriptManager/>来定义一个ScriptManager,简单的ScriptManager定义形式:

ASP.NET AJAX入门系列(2):使用ScriptManager控件 < asp:ScriptManager  ID ="ScriptManager1"  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                   runat
="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件      
< AuthenticationService  Path =""   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件      
< ProfileService  LoadProperties =""  Path =""   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件      
< Scripts >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
<asp:ScriptReference/>
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件      
</ Scripts >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件      
< Services >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< asp:ServiceReference  />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件      
</ Services >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ asp:ScriptManager >
ScriptManager
属性和方法如下:

 

属性/方法

描述

AllowCustomError

Web.config中的自定义错误配置区<customErrors>相联系,是否使用它,默认值为true

AsyncPostBackErrorMessage

异步回传发生错误时的自定义提示错误信息,

AsyncPostBackTimeout

异步回传时超时限制,默认值为90,单位为秒

EnablePartialRendering

是否支持页面的局部更新,默认值为True,一般不需要修改

ScriptMode

指定ScriptManager发送到客户端的脚本的模式,有四种模式:AutoInheritDebugRelease,默认值为Auto,后面会仔细说到。

ScriptPath

设置所有的脚本块的根目录,作为全局属性,包括自定义的脚本块或者引用第三方的脚本块。如果在Scripts中的<asp:ScriptReference/>标签中设置了Path属性,它将覆盖该属性。

OnAsyncPostBackError

异步回传发生异常时的服务端处理函数,在这里可以捕获一场信息并作相应的处理。

OnResolveScriptReference

指定ResolveScriptReference事件的服务器端处理函数,在该函数中可以修改某一条脚本的相关信息如路径、版本等。

 

二.一个简单的示例

这个例子其实是UpdatePanel示例,在页面中加入了日期控件和一个下拉框,根据下拉框选择的不同,日期控件背景变为不同的颜色。示例代码如下:

ASP.NET AJAX入门系列(2):使用ScriptManager控件 <% @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  %>
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< script  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
void DropDownSelection_Change(Object sender, EventArgs e)
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        Calendar1.DayStyle.BackColor 
=
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            System.Drawing.Color.FromName(ColorList.SelectedItem.Value);
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ script >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< html  xmlns ="http://www.w3.org/1999/xhtml" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< head  id ="Head1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< title > ScriptManager Example </ title >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ head >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< body >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< form  id ="form1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< asp:ScriptManager  ID ="ScriptManager1"  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                               runat
="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
</ asp:ScriptManager >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< asp:UpdatePanel  ID ="UpdatePanel1"
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                             runat
="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
< ContentTemplate >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                    
< asp:Calendar  ID ="Calendar1"  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                                  ShowTitle
="True"
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                                  runat
="server"   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                    
< div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        Background:
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< br  />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< asp:DropDownList  ID ="ColorList"  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                                          AutoPostBack
="True"  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                                          OnSelectedIndexChanged
="DropDownSelection_Change"
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                                          runat
="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            
< asp:ListItem  Selected ="True"  Value ="White" >  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            White 
</ asp:ListItem >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            
< asp:ListItem  Value ="Silver" >  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            Silver 
</ asp:ListItem >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            
< asp:ListItem  Value ="DarkGray" >  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            Dark Gray 
</ asp:ListItem >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            
< asp:ListItem  Value ="Khaki" >  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            Khaki 
</ asp:ListItem >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            
< asp:ListItem  Value ="DarkKhaki" >  D
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            ark Khaki 
</ asp:ListItem >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
</ asp:DropDownList >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                    
</ div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
</ ContentTemplate >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
</ asp:UpdatePanel >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< br  />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
</ div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ form >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ body >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ html >

 

三.客户端脚本模式

在前面我们提到了ScriptMode属性指定ScriptManager发送到客户端的脚本的模式,它有四种模式:AutoInheritDebugRelease,默认值为Auto

1Auto:它会根据Web站点的Web.config配置文件来决定使用哪一种模式,只有当配置文件中retail属性设置为false:

ASP.NET AJAX入门系列(2):使用ScriptManager控件 < system .web >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件  
< deployment  retail ="false"   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ system.web >

或者页面中的Debug指令设为true的时候会使用Debug版本,其他的情况都会使用Release版本。

ASP.NET AJAX入门系列(2):使用ScriptManager控件 < %@ Page  Language ="C#"  Debug ="true"
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件AutoEventWireup
="true"  CodeFile ="Default.aspx.cs"  Inherits ="_Default"  % >

2Inherit:应该是通过程序设置ScriptMode的时候,等同于Auto?(不太了解)

3Debug:客户端脚本使用Debug版本,除非retail属性设为true

4Release:客户端脚本使用Release版本,除非retail属性设为false

 

四.错误处理

在页面回传时如果发生了异常AsyncPostBackError事件将被触发,错误信息的处理依赖于AllowCustomErrors属性、AsyncPostBackErrorMessage属性和Web.config中的<customErrors>配置区。下面看一个简单的错误处理例子,在AsyncPostBackError事件中捕获到异常信息并设置AsyncPostBackErrorMessage属性。

ASP.NET AJAX入门系列(2):使用ScriptManager控件 <% @ Page Language="C#"  %>
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< script  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    protected 
void ErrorProcessClick_Handler(object sender, EventArgs e)
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
// This handler demonstrates an error condition. In this example
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件        
// the server error gets intercepted on the client and an alert is shown. 
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件        
throw new ArgumentException();
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    protected 
void SuccessProcessClick_Handler(object sender, EventArgs e)
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
// This handler demonstrates no server side exception.
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件        UpdatePanelMessage.Text 
= "The asynchronous postback completed successfully.";
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    protected 
void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件        ScriptManager1.AsyncPostBackErrorMessage 
= "异常信息为:" + e.Exception.Message;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ script >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< html  xmlns ="http://www.w3.org/1999/xhtml" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< head  id ="Head1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< title > PageRequestManager endRequestEventArgs Example </ title >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< style  type ="text/css" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    body 
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        font-family
: Tahoma;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
}

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    #AlertDiv
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    left
: 40%; top: 40%;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    position
: absolute; width: 200px;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    padding
: 12px; 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    border
: #000000 1px solid;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    background-color
: white; 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    text-align
: left;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    visibility
: hidden;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    z-index
: 99;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
}

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    #AlertButtons
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    position
: absolute;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    right
: 5%;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    bottom
: 5%;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
}

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ style >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ head >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< body  id ="bodytag" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< form  id ="form1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< asp:ScriptManager  ID ="ScriptManager1"  runat ="server"  
ASP.NET AJAX入门系列(2):使用ScriptManager控件            OnAsyncPostBackError
="ScriptManager1_AsyncPostBackError" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
</ asp:ScriptManager >
ASP.NET AJAX入门系列(2):使用ScriptManager控件 
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< script  type ="text/javascript"  language ="javascript" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
var divElem = 'AlertDiv';
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
var messageElem = 'AlertMessage';
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
var errorMessageAdditional = 'Please try again.';
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
var bodyTag = 'bodytag';
ASP.NET AJAX入门系列(2):使用ScriptManager控件                Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
function ToggleAlertDiv(visString)
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     
if (visString == 'hidden')
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件                         $get(bodyTag).style.backgroundColor 
= 'white';                         
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     }

ASP.NET AJAX入门系列(2):使用ScriptManager控件                     
else
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件                         $get(bodyTag).style.backgroundColor 
= 'gray';                         
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     
var adiv = $get(divElem);
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     adiv.style.visibility 
= visString;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
function ClearErrorState() {
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     $get(messageElem).innerHTML 
= '';
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                     ToggleAlertDiv('hidden');                     
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                }

ASP.NET AJAX入门系列(2):使用ScriptManager控件                
function EndRequestHandler(sender, args)
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件                   
if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
ASP.NET AJAX入门系列(2):使用ScriptManager控件                   
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                       
var errorMessage = args.get_error().message
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                       args.set_errorHandled(
true);
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                       ToggleAlertDiv('visible');
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                       $get(messageElem).innerHTML 
= '"' + 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                                errorMessage + '
" ' + errorMessageAdditional;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                   }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
</ script >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< asp:UpdatePanel  runat ="Server"  UpdateMode ="Conditional"  ID ="UpdatePanel1" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
< ContentTemplate >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                    
< asp:Panel  ID ="Panel1"  runat ="server"  GroupingText ="Update Panel" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< asp:Label  ID ="UpdatePanelMessage"  runat ="server"   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< br  />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        Last update:
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
<% =  DateTime.Now.ToString()  %>
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        .
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< br  />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< asp:Button  runat ="server"  ID ="Button1"  Text ="Submit Successful Async Postback"
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            OnClick
="SuccessProcessClick_Handler"  OnClientClick ="ClearErrorState()"   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< asp:Button  runat ="server"  ID ="Button2"  Text ="Submit Async Postback With Error"
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                            OnClick
="ErrorProcessClick_Handler"  OnClientClick ="ClearErrorState()"   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                        
< br  />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                    
</ asp:Panel >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
</ ContentTemplate >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
</ asp:UpdatePanel >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< div  id ="AlertDiv" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
< div  id ="AlertMessage" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
</ div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
< br  />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
< div  id ="AlertButtons"   >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                    
< input  id ="OKButton"  type ="button"  value ="OK"  
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                           runat
="server"  onclick ="ClearErrorState()"   />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件                
</ div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件           
</ div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ form >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ body >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ html >

运行后时界面:

ASP.NET AJAX入门系列(2):使用ScriptManager控件

发生异常信息:

ASP.NET AJAX入门系列(2):使用ScriptManager控件

 

五.Services属性

Services用来管理对WebService的调用,通过<asp:ServiceReference>标签可以在Services中注册一个WebService,在运行时ScriptManager将为每一个ServiceReference对象生成一个客户端代理,<asp:ServiceReference>标签一个很重要的属性是Path,用来指定WebService的路径,如下所示:

ASP.NET AJAX入门系列(2):使用ScriptManager控件 < asp:ScriptManager  ID ="SM1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< Services >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< asp:ServiceReference  Path ="Service.asmx" />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ Services >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ asp:ScriptManager >

看一个简单的调用WebService的例子:

WebService如下,注意在WebServiceSample上加ScriptService特性:

ASP.NET AJAX入门系列(2):使用ScriptManager控件 [ScriptService]
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
public   class  WebServiceSample : System.Web.Services.WebService  {
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
public WebServiceSample()
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
//Uncomment the following line if using designed components 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
//InitializeComponent(); 
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    [WebMethod]
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
public string EchoString(String s)
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
return "Hello " + s;
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件}

ASPX页面:

ASP.NET AJAX入门系列(2):使用ScriptManager控件 <% @ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3"  %>
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< head  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< title > Untitled Page </ title >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ head >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< script  type ="text/javascript"  language ="JavaScript" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
function OnbuttonGo_click() 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件        requestSimpleService 
= WebServiceSample.EchoString(
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            document.getElementById('inputName').value,       
//params
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件            OnRequestComplete    
//Complete event
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件            );
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
return false;
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
function OnRequestComplete(result) 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件        alert(result);
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ script >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< body >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< form  id ="form1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< asp:ScriptManager  ID ="ScriptManager1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< Services >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            
< asp:ServiceReference  Path ="WebServiceSample.asmx" />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
</ Services >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ asp:ScriptManager >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< input  type ="text"  id ="inputName"  size =20 />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< input  id ="button"  type ="button"  value ="调 用"  onclick ="return OnbuttonGo_click()"   /></ div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ form >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ body >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ html >

运行后效果如下:

ASP.NET AJAX入门系列(2):使用ScriptManager控件

当然了也可以在运行时动态的在Services中加入ServiceReference,下面看一个运行时动态加入ServiceReference的例子:

ASP.NET AJAX入门系列(2):使用ScriptManager控件 <% @ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3"  %>
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< script  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
void Page_Load(object sender, EventArgs e)
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        ServiceReference sr 
= new ServiceReference();
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        sr.Path 
= "WebServiceSample.asmx";
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        ScriptManager1.Services.Add(sr);
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ script >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< head  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< title > Untitled Page </ title >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ head >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< script  type ="text/javascript"  language ="JavaScript" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
function OnbuttonGo_click() 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        requestSimpleService 
= WebServiceSample.EchoString(
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件            document.getElementById('inputName').value,       
//params
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件            OnRequestComplete    
//Complete event
ASP.NET AJAX入门系列(2):使用ScriptManager控件

ASP.NET AJAX入门系列(2):使用ScriptManager控件            );
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
return false;
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
function OnRequestComplete(result) 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
{
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        alert(result);
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    }

ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ script >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件 
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
< body >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< form  id ="form1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< asp:ScriptManager  ID ="ScriptManager1"  runat ="server" >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ asp:ScriptManager >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
< div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< input  type ="text"  id ="inputName"  size =20 />
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件        
< input  id ="button"  type ="button"  value ="调 用"  onclick ="return OnbuttonGo_click()"   /></ div >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件    
</ form >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ body >
ASP.NET AJAX入门系列(2):使用ScriptManager控件
ASP.NET AJAX入门系列(2):使用ScriptManager控件
</ html >

可以看到运行后和在ScriptManager中直接加入的效果是一样的。

ASP.NET AJAX入门系列(2):使用ScriptManager控件

 

六.Scripts属性

关于Scripts属性到后面具体再说吧,最主要的属性有Path指定脚本的路径,ScriptMode指定客户端脚本的模式,它会覆盖ScriptManager中的ScriptMode属性,还有一个属性是IgnoreScriptPath,指定是否忽略掉ScriptManager中的ScriptPath属性。

关于ScriptManager控件就学习到这里了,至于AuthenticationService属性和ProfileService属性都很简单。

示例代码下载: http://files.cnblogs.com/Terrylee/ASPNETAJAXScriptManagerDemo.rar

你可能感兴趣的:(asp.net)