小试 ScriptManager

小试 ScriptManager1概述ScriptManager控件管理用于MicrosoftASP.NETAJAX页面的客户端脚本。默认情况下,ScriptManager控件将MicrosoftAJAX库的脚本与页面注册到一起,这使脚本可以使用类型系统扩展并支持局部页面输出和Web服务调用。在页面中,必须使用ScriptManager控件来使下列MicrosoftASP.NETAJAX…

大家好,又见面了,我是你们的朋友全栈君。

1 概述

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 控件。页面可以直接包含控件,或者包含在嵌套的组件中,如用户控件、母版页中的内容页或者嵌套的母版页。当页面中已经有一个 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″ runat=”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 中设置的信息的浏览器消息框。
 
 
TrackBack:http://www.cnblogs.com/cxy521/archive/2008/01/22/1048257.html

转载于:https://www.cnblogs.com/hdjjun/archive/2008/06/17/1223645.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158674.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python3 软连接_python3哪个版本好用

    python3 软连接_python3哪个版本好用在ubuntu下面发现pip的默认版本指向的是python3.6,而因项目需要利用Python2.7.查看pip版本pip–version指向的的Python3.6,而此时已经为Python建立2.7的软连接查看默认调用pip的位置.whichpip输出/usr/local/bin/pip先删除sudorm-rf/usr/local/bin/pip安装python2.7版本的pipsu…

  • mongodb联表查询_mongodb聚合查询

    mongodb联表查询_mongodb聚合查询  在使用MongoDB存储数据的时候,我们查询的时候,有时候难免会需要进行连表查询。但是MongoDB本身是非关系性数据库,连表查询,很多时候,需要我们自己在代码里手工操作。但是从MongoDB3.2版本过后,我们可以使用lookup∗∗∗进行连表查询。下面就简单介绍一下MongoDB的∗∗∗lookup∗∗∗进行连表查询。下面就简单介绍一下MongoDB的∗∗∗lookup***进行…

  • 【转载】在VS2008中使用WSE 3.0过程全记录

    【转载】在VS2008中使用WSE 3.0过程全记录

    2021年11月18日
  • Java基础学习教程,eclipse简单使用教程(Java集成开发工具)

    Java基础学习教程,eclipse简单使用教程(Java集成开发工具)使用集成开发工具eclipse1、java的集成开发工具很多,包括:eclipse、IntellijIDEA、netbeans….. eclipse: IBM开发的。eclipse翻译为:日食。寓意吞并SUN公司(SUN是太阳。)最终没有成功,SUN公司在2009年的时候被oracle甲骨文公司收购。eclipse在以前的开发中使用非常多,但是由于IDEA工具的出现,让eclipse的用户大大减少,目前eclipse占市场份额30%。IDEA占市场份额60%,剩下10%是其他的开

  • 3.7v锂电池升压到5v_锂电池升压5伏电路图

    3.7v锂电池升压到5v_锂电池升压5伏电路图1,升压类型,小电流250MA类型2,升压类型,低功耗8uA,600MA类型3,升压类型,升压可达12V,1.2A类型4,升压类型,升压可达24V,1.2A类型5,升压类型,输出5V2.4A类型6,升压类型,输出5V3A类型7,锂电池充电IC,实现边充边放电8,锂电池稳压LDO芯片,和降压芯片1,升压类型,小电流250MA类型PW5410A是一颗低噪声,恒频1.2MHZ的开关电容电压倍增器。PW5410A的输入电压范围2.7V-5V,输出电压5V固

  • TCP报文段详解

    TCP协议tcp报文段源端口&amp;amp;目的端口2字节(tcp的分用功能以端口实现)序号4字节tcp三次握手中的seq,表示tcp数据段发送的第一个字节的序号,范围[0,2^32-1],即mod2^32;例如,seq=201,携带的数据有100,那么最后一个字节的序号就为300,那么下一个报文段就应该从401开始,下一个序列的首地址.tcp是面向字节…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号