[ASP.NET]ScriptManager控件使用

目录

概述

局部刷新

错误处理

类型系统扩展

注册定制脚本

注册 Web 服务

在客户端脚本中使用认证和个性化服务

ScriptManagerProxy 类

添加 ScriptManager 控件

客户端脚本管理示例

概述

ScriptManager 控件管理用于 Microsoft ASP.NET AJAX 页面的客户端脚本。默认情况下,ScriptManager 控件将 Microsoft AJAX 库的脚本与页面注册到一起,这使脚本可以使用类型系统扩展并支持局部页面输出和 Web 服务调用。

在页面中,必须使用 ScriptManager 控件来使下列 Microsoft ASP.NET AJAX 的特性可用:

Microsoft AJAX 库的客户端脚本功能,以及任何要发送到浏览器的定制脚本。

部分页面输出,这使页面中的某个区域可以不依赖于回送就可以刷新。ASP.NET AJAX 的 UpdatePanel 、UpdateProgress 和 Timer 控件需要                 ScriptManager 控件来支持局部输出。

Web 服务的 Javascript 代理,这使客户端脚本可以访问由强类型的 Web 服务暴露出来的方法。

Javascript 类访问 ASP.NET 认证和个性化应用服务。

局部刷新

当页面中有一个或多个 UpdatePanel 控件时,ScriptManager 控件将管理在浏览器中的局部页面输出。控件与页面生成周期交互来更新包含在 UpdatePanel 控件中的局部页面。

ScriptManager 控件的 EnablePartialRendering 属性决定了页面是否可以进行局部更新。默认情况下,EnablePartialRendering 的值为 true,因此,在默认情况下添加了一个 ScriptManager 控件到页面中时,局部输出是可用的。

错误处理

在局部输出期间,可以使用下列方法来处理错误:

设置 AllowCustomErrorsRedirect 属性,它决定了在异步回发期间发生错误时,如何使用 Web.config 文件的定制的错误节。

处理 ScriptManager 控件的 AsyncPostBackError 事件,它在异步回发期间出现页面错误时触发。

设置 AsyncPostBackErrorMessage 属性,这是发送到浏览器的错误信息。

类型系统扩展

Microsoft AJAX 库添加了 Javascript 的类型系统扩展,提供了命名空间、继承、接口、枚举、反射以及用于字符串和数组的辅助功能。这些扩展提供了在客户端脚本中的功能使其看起来像是 .NET 框架。它使你可以使用结构化的方式来编写ASP.NET 2.0 AJAX 扩展应用程序,以增强可维护性、使得更易于添加特性和划分功能层次。将 ScriptManager 控件到 ASP.NET Web 页面会自动包含类型系统扩展,所以可以在客户端脚本中使用库。

注册定制脚本

使用 ScriptManager 管理那些为参与局部页面更新的控件而创建的资源,资源包括脚本、样式、隐藏字段和数组。ScriptManager 控件的 Scripts 集合包括了每一个浏览器可用的脚本的 ScriptReference 对象。可以用声明或编程来指定脚本。

ScriptManager 控件还提供了可以用来以编程的方式管理客户端脚本和隐藏字段的注册方法。在注册支持局部页面更新的脚本和隐藏字段时,必须调用 ScriptManager 的注册方法。(要注册不是局部页面更新所需要的脚本时,可以使用 ClientScriptManager 类。)

注意:
    任何在页面中由 ScriptManager 控件注册的脚本和所有事件处理脚本都必须包含在页面中的 <form> 元素中,否则,脚本将不会被注册或执行。

注册 Web 服务

ScriptManager 控件的 Services 集合中包含了每个使用 ScriptManager 注册的 Web 服务的 ServiceReference 对象。ASP.NET AJAX 框架为 Services 集合中的每个 ServiceReference 对象生成一个客户端代理对象。代理类和它的强类型成员简化了客户端脚本使用 Web 服务。

可以在运行时用编程的方式添加 ServiceReference 对象到 Services 集合中,以注册 Web 服务。

在客户端脚本中使用认证和个性化服务

Microsoft AJAX 库包含了直接从 Javascript 中调用 ASP.NET 2.0 窗体认证和个性化应用服务的代理类。如果要使用定制的认证服务,可以使用 ScriptManager 控件来注册。

ScriptManagerProxy 类

在一个页面中只能添加一个 ScriptManager 控件。页面可以直接包含控件,或者包含在嵌套的组件中,如用户控件、母版页中的内容页或者嵌套的母版页。当页面中已经有一个 ScriptManager 控件,而嵌套的或父组件需要 ScriptManager 控件的其他特性时,组件就可以包含一个 ScriptManagerProxy 控件。例如,ScriptManagerProxy 控件可以使你添加仅用于嵌套组件的脚本和服务到相应组件中。

添加 ScriptManager 控件

直接将 ScriptManager 控件从工具箱中拖到页面的 <form> 元素中即可得到如下的元素引用,这样,在它所有的页面就可以使用 ASP.NET AJAx 了。

1 <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 

客户端脚本管理示例

(1) 和 (2) 分别展示了将单个程序集中嵌入的脚本或者独立的脚本文件添加到页面中的方法,如果要同时添加多个脚本,任意按这二个方法在 <Scripts> 元素中添加多个 <asp:ScriptReference>元素即可。

(1) 添加程序集中内嵌的脚本

1 <asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Assembly="Microsot.Web.Preview" Name="PreviesScript.js" /> </Scripts> </asp:ScriptManager>

(2) 添加单独的脚本文件

下列代码展示了向页面中添加单独的脚本文件

~/ScriptPath/ScriptFile.js ,可以将它替换成自己所需要的脚本文件使用。

1 <asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="~/ScriptPath/ScriptFile.js" /> </Scripts> </asp:ScriptManager> 

(3)ScriptManager 的相关属性

ScriptMode:

ScriptManager 和 ScriptReference 对象都具有 ScriptMode 属性,它决定向客户端所发送的脚本的版本是 Debug 的还是 Release 的。它有四个可选的值:Inherit、Auto、Debug 和 Release。Debug 和 Release 的意义非常明确,就不再解释。Inherit 表示继承外层的设置,对于ScriptManager 来说,相当于 Auto。Auto 表示根据当前的编译模式及 Web.config 中的相关设置来自动决定脚本的版本。

ScriptPath:

用于指定页面中所有脚本块的相对的、绝对的或应用程序相关的 URL,这包括由当前 ScriptManager 实例注册的定制的或第三方脚本块。如果 Scripts 集合中的 ScriptReference 设置了 Path属性,Path 属性将覆盖 ScriptPath 的设置。如果没有设置此属性且ScriptReference 指定的是程序集的话,每次请求脚本时都将用 WebResource.axd 从程序集中解析出脚本后再发回浏览器,而设置后将直接使用 ScriptPath 下的 js 文件。

LoadScriptsBeforeUI:

当此属性为 ture 时,为引入的脚本生成的 <script>元素将出现在所有页面的 UI 标记之前,否则生成在所有 UI 标记之后。如果在加载的过程执行需要使用了引入的脚本的脚本的话,就必须设置其为 true ,否则将无法执行。

4 添加 Web 服务客户端代理

添加 Web 服务的客户端代理与添加脚本类似,如下列代码所示:

1 <asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="MyServices.asmx" /> </Services> </asp:ScriptManager>

另外,在 Web.config 中还需要加入下列配置项:

1 <system.web> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </httpHandlers> </system.web> 

这样,在客户端脚本中就可以直接调用 Web 服务的静态方法了。

5处理异步回发中出现的异常

在此仅介绍最简单的方式。

通常,在出现异常时,.NET 框架会重定向到一个黄色的异常页面上,但对于用异步回发的方式处理的页面来说,这会是一场灾难,无法恢复到原页面的当前状态。

可以设置 ScriptManager 控件的 AllowCustomErrorsRedirect = "false" 来阻止出现异常时的重定向,设置 AsyncPostBackErrorMessage 属性为出现异常时显示给用户的出错信息。这样,当操作出现异常时,ScriptManager 将自动弹出包含 AsyncPostBackErrorMessage 中设置的信息的浏览器消息框。

参考

百度文库:《AJAX中的ScriptManager实战》

时间: 2024-08-16 16:10:10

[ASP.NET]ScriptManager控件使用的相关文章

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

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

ASP.Net UpdatePanel控件(转)

Asp.net UpdatePanel 允许用户构建一个丰富的,以客户端为中心的应用程序,引用UpdatePanel控件,能够实现页面的部分刷新,一个包含scriptManage和 UpdatePanel控件的页面自动具有页面部分刷新的功能,不需要写任何的客户端JavaScript代码.一个web页面只能包含一个 ScriptManage控件,但可以包含一个或多个UpdatePanel控件.  使用UpdatePanel控件实现页面的局部更新,需要包含一个ScriptManage控件,并且必须将

通过Ajax来简单的实现局部刷新(主要为C#中使用的UpdatePanel控件和ScriptManager控件)

1. ScriptManager和UpdatePanel控件联合使用可以实现页面局部异步刷新的效果.UpdatePanel用来设置页面中局部异步刷新的区域,它必须依赖于ScriptManager,因为ScriptManager控件提供了客户端脚本生成与管理UpdatePanel的功能. ScriptManager属性 解释 EnablePartialRendering 如果启用了部分呈现且禁止了整页更新,则为 true:否则为 false. 默认值为 true.       一.实例一 Upda

初始ASP.NET数据控件【续 ListView】

ListView控件   ListView控件可以用来显示数据,它还提供编辑,删除,插入,分页与排序等功能.ListView是GridView与DataList的融合体,它具有GridView控件编辑数据的功能同时还具有DataList控件的灵活布局的功能.ListView控件的分页功能需要通过DataPager控件来实现. ListView控件的模版 LayoutTemplate:标识定义控件的主要布局的根模版.包含一个占位符对象,如表行(tr),div,span元素.此元素将由ItemTem

asp.net分页控件使用详解【附实例下载】

本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧 一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer"

Asp.Net数据控件引用AspNetPager.dll分页

今天与大家分享一下"Asp.Net数据控件引用AspNetPager.dll分页"首先声明以下几点: 1.也许讲解有点初级,希望高手不要"喷"我,因为我知道并不是每一个人都是高手,我也怕高手们说我装13,小生不才: 2.如有什么不对的地方,还希望大家指出,一定虚心学习: 3.本文属于作者原创,尊重他人劳动成果,转载请注明作者,谢谢. 下面开讲: 第一步:首先是下载一个AspNetPager.dll 下载地址 http://files.cnblogs.com/tand

ASP.NET控件&lt;ASP:Button /&gt; html控件&lt;input type=&quot;button&quot;&gt;区别联系

ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样的东西 服务器只认识input,我们可以直接写input 但是asp是要把自己自动翻译成input再交给服务器的.其实是一样的东西 写写我看到的区别:                asp控件,直接可以用c#编程                input加上 runat=“server” 也被c#编程了 说白

asp.net验证控件

asp.net验证控件的好处: 1,客户端服务器端都会同时校验. 2,简化校验逻辑. 1,RequiredFieldValidator:非空校验 InitialValue:默认值.当控件的值等于默认值时不能通过校验. Text:显示的错误信息. ControltoValidat:关联需要验证的控件. 2,RangeValidator:在给定的最大最小值之间. Type:需要验证的数据类型.MaximumValue:最大值.MinimumValue:最小值. 不会进行非空校验.如要进行非空校验需要

asp.net 不用控件 循环输出数据库数据的方法

不使用什么repeater gridview之类的控件,怎么才能输出数据库的数据到一个table ,我用response.write在后台,拼接 table 代码可以输出 但总是在页面的最上面 , 是不是要在aspx页面相应位置用<% %> 循环输出 但又提示找不到我后台填充的DATASET,因为听说公司做asp.net是不用控件的,想知道他们是怎么做输出数据库表格的,还请高手帮帮忙,谢谢了. 不明白来问我后台代码public string test = "";    pr