目录

概述

局部刷新

错误处理

类型系统扩展

注册定制脚本

注册 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实战》

  • 博客地址:http://www.cnblogs.com/wolf-sun/
    博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。

[ASP.NET]ScriptManager控件使用 转载的更多相关文章

  1. [ASP.NET]ScriptManager控件使用

    目录 概述 局部刷新 错误处理 类型系统扩展 注册定制脚本 注册 Web 服务 在客户端脚本中使用认证和个性化服务 ScriptManagerProxy 类 添加 ScriptManager 控件 客 ...

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

    ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问W ...

  3. asp.net分页控件

    一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Reg ...

  4. asp.net ajax控件tab扩展,极品啊,秒杀其它插件

    说明:asp.net ajax控件tab要设置width和height,而且在线文本编辑器放能够放入tab中,也必须是asp.net的控件型在线文本,例如fckeditor,下面是我设置好的配置. & ...

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

    1. ScriptManager和UpdatePanel控件联合使用可以实现页面局部异步刷新的效果.UpdatePanel用来设置页面中局部异步刷新的区域,它必须依赖于ScriptManager,因为 ...

  6. ASP.Net UpdatePanel控件 局部刷新 && 弹出提示信息

    参考博客: https://blog.csdn.net/qq_35019337/article/details/69972552 https://blog.csdn.net/huangyezi/art ...

  7. javascript获取asp.net服务器端控件的值

    代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_ ...

  8. ASP.NET控件<ASP:Button /> html控件<input type="button">区别联系

    ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样 ...

  9. [ASP.NET]asp.net Repeater控件的使用方法

    asp.net Repeater控件的使用方法 -- : 4770人阅读 评论() 收藏 举报 asp.netserveraspdatasetdeletexhtml 今天学习了,Repeater控件 ...

随机推荐

  1. 使用CSS实现无滚动条滚动

    我们都知道,撸页面的时候当我们的内容超出了我们的div,往往会出现滚动条,影响美观. 尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果. 我们不希望出现滚动条,也不希望超出去的内容被放 ...

  2. 详解纯css实现瀑布流(multi-column多列及flex布局)

    瀑布流的布局自我感觉还是很吸引人的,最近又看到实现瀑布流这个做法,在这里记录下,特别的,感觉flex布局实现瀑布流还是有点懵的样子,不过现在就可以明白它的原理了 1.multi-column多列布局实 ...

  3. Eslint使用(webpack中使用)

    一.安装 npm i -D eslint npm i babel-eslint \ eslint-config-airbnb \ // Airbnb的编码规范是在业界非常流行的一套规范 eslint- ...

  4. CentOS-7.2安装Ambari-2.6.1

    CentOS-7.2安装Ambari-2.6.1 一.Ambari 是什么? Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目, ...

  5. vivo怎么录屏 手机录制屏幕详细教程

    在手机上我们经常可以刷到许多类似于手机游戏之类的屏幕视频我想肯定会有很多人好奇怎么录制的,今天小编所说的便是教大家如何在安卓手机上进行屏幕录像,下面便是关于vivo怎么录屏的具体操作方法,希望能对你们 ...

  6. 我写的Java相关的文章

    此文正在更新中... Activiti 升级到Activiti7了. Web service/Soap Java如何调用.net写的asmx服务

  7. yarn安装ant-报错

    异常现象: 使用react引用antd的库时报错 yarn add antd Trace: Error: connect ETIMEDOUT 114.55.80.225:80 at Object._e ...

  8. Python 多线程并发程序设计与分析

    多线程并发程序设计与分析 by:授客 QQ:1033553122 1.技术难点分析与总结 难点1:线程运行时,运行顺序不固定 难点2:同一段代码,再不加锁的情况下,可能被多个线程同时执行,这会造成很多 ...

  9. 「Android」单例的五种写法

    单例 发现博客园可以很好的设置自己的博客文章的展示,很开心,然后特此发一篇 其实这几种写法大家应该都会的,就权当拿来记录一下吧,以后复习巩固也比较方便. 这篇文章中的代码,来自一篇视频(我想找视频贴上 ...

  10. Android 源码编译之旅

    目录 前言 背景 安装软件 正文 Mac 分区 移动硬盘分区 Repo 下载源码 编译 源码导入 Android Studio 查看 碰到的问题 Could not find a supported ...