asp:ScriptManager

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

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

概述

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 中设置的信息的浏览器消息框

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158538.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jmeter进阶-webservice接口「建议收藏」

    jmeter进阶-webservice接口「建议收藏」常用的接口类型http、webservice(soap)、websocket、dabbo如何判断接口是否为webservice:(1)询问开发可知;(2)通过地址查看可知(结尾是wsdl);

    2022年7月4日
    22
  • 使用JWT实现单点登录(完全跨域方案)

    首先介绍一下什么是JSONWebToken(JWT)?官方文档是这样解释的:JSONWebToken(JWT)是一个开放标准(RFC7519),它定义了一种紧凑且独立的方式,可以在各方之间作为JSON对象安全地传输信息。此信息可以通过数字签名进行验证和信任。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。虽然JWT可以加密以在各方之间提供保密…

    2022年4月6日
    39
  • linux load average,Linux Load Average详解

    linux load average,Linux Load Average详解定义在Linux,以及其他类Unix的系统中,常用该系统正在进行的运算工作来衡量该系统的系统负荷(SystemLoad)。一个完全空闲的系统,它的负荷(SystemLoad)标记为0;每一个正在运行或者正在等待CPU资源的进程,会导致平均负荷(SystemLoad)加1。所以,如果一个系统的负荷是4,就是说有4个进程正在使用,或者正在等待CPU资源。因为系统负荷(SystemLoad)是…

    2022年7月17日
    14
  • 理解逻辑回归中的ROC曲线和KS值「建议收藏」

    理解逻辑回归中的ROC曲线和KS值「建议收藏」1.回归和分类任务分类和回归都属于监督学习(训练样本带有信息标记,利用已有的训练样本信息学习数据的规律预测未知的新样本标签)分类预测的结果是离散的(例如预测明天天气-阴,晴,雨)回归预测的任务是连续的(例如预测明天的温度,23,24,25度)分类中比较常用的是二分类(label结果为0或1两种)2.逻辑回归不是回归从名字来理解逻辑回归.在逻辑回归中,逻辑一词是logis…

    2022年5月16日
    49
  • oracle用户修改密码权限_oracle提示表或视图不存在

    oracle用户修改密码权限_oracle提示表或视图不存在今天想要修改一个用户的密码,但是在执行完alteruser语句后,提示用户不存在。查看dba_users视图后,该用户的确是存在的,但是注意到一个细节是用户名是小写的,其他的用户名都是大写。在群内咨询过大神后,原来是在创建用户时,把用户名用双引号包起来了,如果没有用双引号,数据库会自动将用户名改为大写,但是用了双引号后,则保持小写。解决方法为,若创建过程用引号包起来,则在后续的使用过程中,也需要

    2022年7月28日
    1
  • IIS7 出现HTTP 500内部服务器错误解决方案[通俗易懂]

    IIS7 出现HTTP 500内部服务器错误解决方案[通俗易懂]2019独角兽企业重金招聘Python工程师标准>>>…

    2022年8月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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