本文讨论:
  • ScriptManager 在 ASP.NET AJAX 中的作用
  • ScriptManager 的隐式使用和显式使用
  • ASP.NET AJAX 对 Web 服务的支持
  • ASP.NET AJAX 页面生命周期
本文使用了以下技术:
ASP.NET AJAX
当今,网站的使用者可以像发布者那样,对网站的内容、发展方向及其成功承担责任。每天都会涌现出许多样式新颖的网站,如社交站点、博客、在线相册集和 Wiki,这只是其中的一部分,而这种趋势才刚刚开始。虽然您的网站可以提供最好的内容,但是,如果不能让用户参与网站的发展与成长,您的网站很快就会毫 无用武之地。
作 为一名开发人员,您的任务是使用便利的工具来满足普通使用者的需求。要使一个站点更加引人注目,从 Web 浏览器本身入手是再自然不过的了,因为它是站点中最贴近使用者的部分。遗憾的是,当前 Web 浏览器中的许多功能并不总是那么容易利用。编写与浏览器交互的代码必须付出巨大的艰辛,因为存在着不计其数的浏览器与操作系统组合,缺乏一致性的问题令人 伤透脑筋。若能采用单一平台并行地构建富客户端和 Web 应用程序,那将会十分有益,这样一来,针对某一浏览器环境而完善最终用户体验所付出的劳动就不需要针对另一浏览器环境而重复进行。
Microsoft 发布的 ASP.NET AJAX 可以满足这种 Web 应用程序开发中的需求。本文旨在扩展您对 ASP.NET AJAX 的中心组件(名为 ScriptManager 控件)的认识,并展示如何使用它实现 ASP.NET AJAX 高级编程。ScriptManager 是放置在 Web 窗体上的服务器端控件,在 ASP.NET AJAX 中发挥核心作用。其主要任务是调解 Web 窗体上的所有其他 ASP.NET AJAX 控件,并将适当的脚本库添加到 Web 浏览器中,从而使 ASP.NET AJAX 的客户端部分能够正常工作。您经常会发现自己使用 ScriptManager 注册其他控件、Web 服务和客户端脚本。
作 为服务器端的控件,ScriptManager 回应 ASP.NET 页面生命周期中的事件,利用这些事件协调 ASP.NET AJAX 使用的所有控件、选项和代码的活动。ScriptManager 将关联某一特定事件,当事件发生时获得通知,并根据环境配置多个设置;此过程将通过 ASP.NET 页面的呈现循环多次重复进行。不过,它所配置的设置往往正是您无缝使用 ASP.NET AJAX 所需的设置。
首 先,我们将了解 ScriptManager 控件可帮助您实现的 ASP.NET AJAX 的主要功能,然后开始探讨该控件在服务器上的生命周期。通过了解 ScriptManager 的内部结构,您会对该控件为 Web 应用程序开发提供的选项有更深入的认识,并了解如何从中获得最大好处。
让 我们从脚本开始,因为它是 ASP.NET AJAX 的中心元素。实际上,ASP.NET AJAX 的所有功能均依赖其脚本库。我们随后将浏览 ASP.NET AJAX 中对 AJAX 支持的某些功能,与 Web 服务的交互方式,最后谈一谈有关身份验证的问题。在对各个问题的讨论过程中,还将向您展示如何通过 ScriptManager 对选项进行调整。

使用 ScriptManager 编制脚本
图 1 中的代码块演示了在 ASP.NET AJAX 中定义类的标准方法。客户端脚本库的内部结构不在本文讨论范围内,但总体来说,创建一个基于 ASP.NET AJAX 脚本扩展的类,其常见的必要步骤如下:
  1. 向 ASP.NET AJAX 注册命名空间。
  2. 创建一个构造函数 方法。
  3. 通过填写成员方法 及其功能,创建类的原型。
  4. 向 ASP.NET AJAX 注册这个类。
  5. 向通过 ScriptManager 添加的客户端脚本发出通知,已经到达类型定义的结尾(调用 Sys.Application.notifyScriptLoaded)。
该 类只向客户端公开功能。不过,通过 ScriptManager 控件,您可以利用 ASP.NET AJAX 中制作脚本更为有趣的一面,其中,您的类可以同时向客户端的 JavaScript 和服务器上的 Microsoft® .NET Framework 代码公开功能。例如,如果您的控件的使用者对控件的一个实例设置了如下属性
图 4 一个简单的异步控件 
这 确实是最基本的了。如果有人在该设置中单击“Button”,则 Button 控件将引发一个回发事件,该事件将由 UpdatePanel 控件捕获。然后,UpdatePanel 会将该回发事件作为一个部分回发而重新提交,其内容将得到异步更新(浏览器无需完全重新加载页面)。
然 而,可能会出现许多有趣的情形,您的期望将会落空,并给您留下一片混乱。例如,使用 UpdatePanel 控件和 AJAX 会造成一种分离脚本引用的离奇的新方式。在过去,由于出现完全回发,您可能向页面中添加了如下脚本:
图 5 异步使用 Link­Button 
图 6 更新 UpdatePanel 之外的控件 
图 7 ScriptManager 属性 
您 可以看到,我突出显示了 Scripts 集合,在其下方还有一个 Services(Web 服务)集合。您需要从您的客户端代码中用 ScriptManager 注册任何想要与之交互的服务。要向 ScriptManager 控件中添加服务引用,只需展开 Services 集合并添加引用,如图 8 所示。
ScriptManager 帮助您实现 Web 应用程序的 AJAX 功能
图 8 添加 Web 服务引用 (单击该图像获 得较大视图)
这 样做到底做有什么作用?稍后我会进行详细解释,不过,如果您希望通过 ScriptManager 查看引用某个服务的页面的源文件,可能会发现其内容中含有与以下类似的代码:
图 9 更新后的 Label 

图 10 在 ASP.NET AJAX 中定义类 

ben-rush.net/blog 上,您可以了解更多有关 Ben 的信息。


以上是mscn的原文转载,以前只是简单使用ScriptManager,后来发现他并不是我使用的那么简单,这篇文章对内幕有个大概了解,但还不太理解

 

相关文章:

  • 2021-12-22
  • 2021-11-08
  • 2021-11-21
  • 2021-11-29
  • 2021-06-29
  • 2021-10-11
  • 2021-12-02
猜你喜欢
  • 2022-02-27
  • 2022-12-23
  • 2022-01-18
  • 2021-06-07
  • 2021-08-24
相关资源
相似解决方案