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入门系列:使用ScriptManager控件<asp:ScriptManager ID="ScriptManager1" 
ASP.NET AJAX入门系列:使用ScriptManager控件
ASP.NET AJAX入门系列:使用ScriptManager控件                   runat
="server">
ASP.NET AJAX入门系列:使用ScriptManager控件
ASP.NET AJAX入门系列:使用ScriptManager控件      
<AuthenticationService Path="" />
ASP.NET AJAX入门系列:使用ScriptManager控件
ASP.NET AJAX入门系列:使用ScriptManager控件      
<ProfileService LoadProperties="" Path="" />
ASP.NET AJAX入门系列:使用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示例,在页面中加入了日期控件和一个下拉框,根据下拉框选择的不同,日期控件背景变为不同的颜色。示例代码如下:


>

三.客户端脚本模式

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

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

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

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

ASP.NET AJAX入门系列:使用ScriptManager控件<%@ Page Language="C#" Debug="true"
ASP.NET AJAX入门系列:使用ScriptManager控件
ASP.NET AJAX入门系列:使用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入门系列:使用ScriptManager控件

发生异常信息:

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

 

五.Services属性

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

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

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

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

ASP.NET AJAX入门系列:使用ScriptManager控件[ScriptService]
ASP.NET AJAX入门系列:使用ScriptManager控件
}

ASPX页面:

>

运行后效果如下:

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

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

>

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

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

 

六.Scripts属性

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

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

相关文章:

  • 2021-09-07
  • 2022-01-31
  • 2021-05-30
  • 2021-07-15
猜你喜欢
  • 2021-11-13
相关资源
相似解决方案