[转]asp: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 认证和个性化应用服务。
1.1 使部分页面输出可用
当页面中有一个或多个 UpdatePanel 控件时,ScriptManager 控件将管理在浏览器中的局部页面输出。控件与页面生成周期交互来更新包含在 UpdatePanel 控件中的局部页面。
ScriptManager 控件的 EnablePartialRendering 属性决定了页面是否可以进行局部更新。默认情况下,EnablePartialRendering 的值为 true,因此,在默认情况下添加了一个 ScriptManager 控件到页面中时,局部输出是可用的。
1.2 错误处理
在局部输出期间,可以使用下列方法来处理错误:
- 设置 AllowCustomErrorsRedirect 属性,它决定了在异步回发期间发生错误时,如何使用 Web.config 文件的定制的错误节。
- 处理 ScriptManager 控件的 AsyncPostBackError 事件,它在异步回发期间出现页面错误时触发。
- 设置 AsyncPostBackErrorMessage 属性,这是发送到浏览器的错误信息。
1.3 使用类型系统扩展
Microsoft AJAX 库添加了 Javascript 的类型系统扩展,提供了命名空间、继承、接口、枚举、反射以及用于字符串和数组的辅助功能。这些扩展提供了在客户端脚本中的功能使其看起来像是 .NET 框架。它使你可以使用结构化的方式来编写ASP.NET 2.0 AJAX 扩展应用程序,以增强可维护性、使得更易于添加特性和划分功能层次。将 ScriptManager 控件到 ASP.NET Web 页面会自动包含类型系统扩展,所以可以在客户端脚本中使用库。
1.4 注册定制脚本
使用 ScriptManager 管理那些为参与局部页面更新的控件而创建的资源,资源包括脚本、样式、隐藏字段和数组。ScriptManager 控件的 Scripts 集合包括了每一个浏览器可用的脚本的 ScriptReference 对象。可以用声明或编程来指定脚本。
ScriptManager 控件还提供了可以用来以编程的方式管理客户端脚本和隐藏字段的注册方法。在注册支持局部页面更新的脚本和隐藏字段时,必须调用 ScriptManager 的注册方法。(要注册不是局部页面更新所需要的脚本时,可以使用 ClientScriptManager 类。)
注意:
任何在页面中由 ScriptManager 控件注册的脚本和所有事件处理脚本都必须包含在页面中的 <form> 元素中,否则,脚本将不会被注册或执行。
1.5 注册 Web 服务
ScriptManager 控件的 Services 集合中包含了每个使用 ScriptManager 注册的 Web 服务的 ServiceReference 对象。ASP.NET AJAX 框架为 Services 集合中的每个 ServiceReference 对象生成一个客户端代理对象。代理类和它的强类型成员简化了客户端脚本使用 Web 服务。
可以在运行时用编程的方式添加 ServiceReference 对象到 Services 集合中,以注册 Web 服务。
1.6 在客户端脚本中使用认证和个性化服务
Microsoft AJAX 库包含了直接从 Javascript 中调用 ASP.NET 2.0 窗体认证和个性化应用服务的代理类。如果要使用定制的认证服务,可以使用 ScriptManager 控件来注册。
1.7 ScriptManagerProxy 类
在一个页面中只能添加一个 ScriptManager 控件。页面可以直接包含控件,或者包含在嵌套的组件中,如用户控件、母版页中的内容页或者嵌套的母版页。欢迎光临学网,收藏本篇文章 [1] [2] [3]
$False$
当页面中已经有一个 ScriptManager 控件,而嵌套的或父组件需要 ScriptManager 控件的其他特性时,组件就可以包含一个 ScriptManagerProxy 控件。例如,ScriptManagerProxy 控件可以使你添加仅用于嵌套组件的脚本和服务到相应组件中。
2 添加 ScriptManager 控件
直接将 ScriptManager 控件从工具箱中拖到页面的 <form> 元素中即可得到如下的元素引用,这样,在它所有的页面就可以使用 ASP.NET AJAx 了。
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
3 客户端脚本管理示例
3.1 和 3.2 分别展示了将单个程序集中嵌入的脚本或者独立的脚本文件添加到页面中的方法,如果要同时添加多个脚本,任意按这二个方法在 <Scripts> 元素中添加多个 <asp:ScriptReference>元素即可。
3.1 添加程序集中内嵌的脚本
如下代码展示了向页面中添加嵌入到 Microsot.Web.Preview 程序集中的 PreviesScript.js 脚本文件。
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Microsot.Web.Preview" Name="PreviesScript.js" />
</Scripts>
</asp:ScriptManager>
3.2 添加单独的脚本文件
下列代码展示了向页面中添加单独的脚本文件 ~/ScriptPath/ScriptFile.js ,可以将它替换成自己所需要的脚本文件使用。
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/ScriptPath/ScriptFile.js" />
</Scripts>
</asp:ScriptManager>
3.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 服务的客户端代理与添加脚本类似,如下列代码所示:
<asp:ScriptManager ID="ScriptManager1" r欢迎光临学网,点击这里查看更多文章教程 [1] [2] [3]
unat="server">
<Services>
<asp:ServiceReference Path="MyServices.asmx" />
</Services>
</asp:ScriptManager>
另外,在 Web.config 中还需要加入下列配置项:
<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 中设置的信息的浏览器消息框
[转]asp:ScriptManager的更多相关文章
- 错误 1 未知的服务器标记“asp:ScriptManager”。
如题 ... 解决方案 :将 <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=ne ...
- asp.net中ScriptManager自带Ajax与jQuery事件冲突
问题引诉:最近在使用asp.net自带的无刷新提交ScriptManager时,发现一个问题,就是和我自己用jQuery写的一些事件函数和局部刷新相冲突.通过在网上收索,发现很多人都遇到这个同样的问题 ...
- [ASP.NET]ScriptManager控件使用 转载
目录 概述 局部刷新 错误处理 类型系统扩展 注册定制脚本 注册 Web 服务 在客户端脚本中使用认证和个性化服务 ScriptManagerProxy 类 添加 ScriptManager 控件 客 ...
- [ASP.NET]ScriptManager控件使用
目录 概述 局部刷新 错误处理 类型系统扩展 注册定制脚本 注册 Web 服务 在客户端脚本中使用认证和个性化服务 ScriptManagerProxy 类 添加 ScriptManager 控件 客 ...
- ASP.NET AJAX入门系列(2):使用ScriptManager控件
ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问W ...
- Asp.Net实现局部刷新,ScriptManager和UpdatePanel控件的使用
<asp:CheckBoxList ID="LimitCollegeNo" runat="server" CellPadding="5" ...
- ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略(转)
asp.net UpdatePanel实现异步局部刷新 如有雷同,不胜荣欣,若转载,请注明 鉴于最近项目需要,研究了一下UpdatePanel控件的使用方法,现总结如下,可能有很多地方不足,还望大家斧 ...
- ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘
开篇:经历了上一篇<aspx与服务器控件探秘>后,我们了解了aspx和服务器控件背后的故事.这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下.然后,再 ...
- asp.net ajax 调用后台方法
js代码 <form id="form1" runat="server"> <script language=javascript type= ...
随机推荐
- 简单引入logback
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
- 编写高质量代码改善C#程序的157个建议——建议102:区分接口和抽象类的应用场合
建议102:区分接口和抽象类的应用场合 接口和抽象类有一些显而易见的区别: 接口支持多继承,抽象类则不能. 接口可以包含方法.属性.索引器.事件的签名,但不能有实现,抽象类则可以. 接口在增加新方法后 ...
- ArcGIS 桌面远程连接带有端口号的SDE
首先配置远程连接 PostgreSQL数据库远程连接功能的开启 需要修改连个配置文件,默认位于 安装目录的data子文件夹下. 1.postgresql.conf 修改成监听所有ip地址的连接 ...
- 你不知道的Console
1.凡人视角 打印字符串 代码: console.log("I am a 凡人"); 打印提示消息 代码: console.info("Yes, you arm a 凡人 ...
- WinAPI 字符及字符串函数(10): lstrcpy - 复制字符串
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- RAD Studio Demo Code和几个国外FMX网站 good
FireMonkey X – Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...
- Android Studio3.2新建项目gradle read time out
试验了好几个小时,看了很多方法,都不管用,运用一下设置好了,记录一下 1. 2.在项目的build.gradle中添加 mavenCentral()maven { url 'https://maven ...
- Django ajax方法提交表单,及后端接受数据
前台代码: {% block content %} <div class="wrapper wrapper-content"> <div class=" ...
- 【海量干货】89页PPT详解微信O2O行业解决方案
根据腾讯大讲堂提供的信息,整理成了PPT,下载地址: http://yunpan.cn/cZAbTnJXnMymd 访问密码 f36d
- Python Python入门
Python入门 今天开会的时候,领导说起python,说的那个叫人心动,于是乎就有了下面的东西.起步开始---------------- 一.概念: 参考:http://www.runoob.com ...