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 控件的背景颜色,使其在获得焦点时为×××:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowjQuery.aspx.cs" Inherits="ShowjQuery" %>
<!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 应用程序中。例如:

<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js" type="text/javascript"></script>

利用 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:ScriptManager ID="sm1" EnableCdn="true" runat="server" />

ASP.NET 框架会从 CDN 获取所有的 JavaScript 文件,包括用于验证的和 UpdatePanel 的。

可以为自己的 JavaScript 文件设定 CDN 路径,使用 WebResource 特性就可以实现。例如:

[assembly: WebResource("Foo.js", "application/x-javascript", CdnPath = "http://foo.com/foo/bar/foo.js")]

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 组件脚本:

<asp:ScriptManager ID="sm1" AjaxFrameworkMode="Explicit" runat="server">

<Scripts>
<asp:ScriptReference Name="MicrosoftAjaxCore.js" />
<asp:ScriptReference Name="MicrosoftAjaxComponentModel.js" />
<asp:ScriptReference Name="MicrosoftAjaxSerialization.js" />
<asp:ScriptReference Name="MicrosoftAjaxNetwork.js" />
</Scripts>
</asp:ScriptManager>