ASP.NET 4 和 Visual Studio 2010 Web 开发概述 2 - AJAX
1) jQuery 包含在 Web Forms 和 MVC
Visual Studio 对 Web Forms 和 MVC 的模板都包含了开源的 jQuery 库。当创建新网站或项目时,一个包含3个如下文件的 Scripts 文件夹会被创建:
- jQuery-1.4.1.js —— 人类可读的、未最小化版本的 jQuery 库
- jQuery-1.4.1.min.js —— 最小化版本的 jQuery 库
- jQuery-1.4.1-vsdoc.js —— 对 jQuery 库的智能感知文档文件
开发时包含未最小化版本的 jQuery,对产品包含最小化版本的 jQuery。
例如,下面的 Web Forms 页面演示了如何使用 jQuery 更改 TextBox 控件的背景颜色,使其在获得焦点时为×××:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Show jQuery</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtFirstName" runat="server" />
<br />
<asp:TextBox ID="txtLastName" runat="server" />
</div>
</form>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 1: 2: <script type="text/javascript"> 3: $("input").focus( function() { $(this).css("background-color", "yellow"); }); 4: </script>
</body>
</html>
2) 内容分发网络(CDN)支持
Microsoft Ajax 内容分发网络(Content Delivery Network,CDN)使香锅轻易地添加 ASP.NET Ajax 和 jQuery 脚本到 Web 应用程序中。例如:
利用 Microsoft Ajax CDN,可以提高 Ajax 应用程序的性能。Microsoft Ajax CDN 的内容是缓存在世界各地的服务器上的。另外,Microsoft Ajax CDN 让浏览器能够为定位在不同域中的网站重用缓存的 JavaScript 文件。
Microsoft Ajax CDN 支持 SSL(HTTPS)。
要学习更多关于 Microsoft Ajax CDN的内容,访问:http://asp.net/ajaxlibrary/cdn.ashx。
ASP.NET ScriptManager 支持 Microsoft Ajax CDN。只要简单地设置 EnableCdn 属性就可以了:
ASP.NET 框架会从 CDN 获取所有的 JavaScript 文件,包括用于验证的和 UpdatePanel 的。
可以为自己的 JavaScript 文件设定 CDN 路径,使用 WebResource 特性就可以实现。例如:
3) ScriptManager 显式脚本
过去,如果你使用 ASP.NET ScriptManager 你需要加载整个庞大的 ASP.NET Ajax 库。通过利用新的 ScriptManager.AjaxFrameworkMode 属性,可以精确地控制 ASP.NET Ajax 库的哪些组件要加载,只加载需要的组件。
ScriptManager.AjaxFrameworkMode 属性可以设置为以下的值:
- Enabled——指示 ScriptManager 控件自动地包含 MicrosoftAjax.js 脚本文件,这是各个核心框架脚本的脚本文件组合(遗留行为)。
- Disabled——指示所有的 Microsoft Ajax 脚本特性都被禁止,ScriptManager 控件不自动引用任何脚本。
- Explicit——指示要显式地包含页面需要的单独框架核心脚本文件的引用,以及对脚本文件需要的依赖的引用 。
例如,如果你设置 AjaxFrameworkMode 属性为 Explicit 那么可以指定需要的详细的 ASP.NET Ajax 组件脚本:
<Scripts>
<asp:ScriptReference Name="MicrosoftAjaxCore.js" />
<asp:ScriptReference Name="MicrosoftAjaxComponentModel.js" />
<asp:ScriptReference Name="MicrosoftAjaxSerialization.js" />
<asp:ScriptReference Name="MicrosoftAjaxNetwork.js" />
</Scripts>
</asp:ScriptManager>