更新:2007 年 11 月
ASP.NET AJAX 功能要求在承载 Web 应用程序的服务器的全局程序集缓存 (GAC) 中安装 System.Web.Extensions 程序集。如果该程序集可用,则应用程序及其在 App_Code 文件夹中或 Bin 文件夹下的程序集中的所有关联控件将都可以使用 AJAX 功能。例如,它们可以注册脚本或创建 UpdatePanel 控件。
本主题介绍两项任务:
如何使用反射检查 System.Web.Extensions 程序集。在创建无论是否安装 ASP.NET AJAX 均可以运行的自定义控件时,此项检查将十分有用。
如何使用 ScriptManager 类的 GetCurrent 方法确定单个页上是否启用了 AJAX 功能。此任务之所以有用,是因为异步回发中使用的脚本必须通过 ScriptManager 控件来注册。否则,将可以在 ClientScriptManager 控件中注册这些脚本。
有关 ASP.NET 中的 AJAX 功能的更多信息,请参见 UpdatePanel 控件概述和部分页呈现概述。
使用反射确定是否已安装 ASP.NET AJAX
使用下面的代码可确定全局程序集缓存中是否已安装 ASP.NET AJAX。
Private Shared ReadOnly ReflectionLock As Object = New Object() SyncLock ReflectionLock Dim scriptManagerType = _ Type.GetType( _ "System.Web.UI.ScriptManager, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35", _ False) If Not (scriptManagerType Is Nothing) Then ' ASP.NET AJAX is installed. Else ' ASP.NET AJAX is not installed. End If End SyncLockPrivate static readonly object ReflectionLock = new object(); Lock (ReflectionLock) { Type scriptManagerType = Type.GetType( "System.Web.UI.ScriptManager, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35", false); if (scriptManagerType != null) // ASP.NET AJAX is installed. else // ASP.NET AJAX is not installed.}
说明:请确保已将 Version 属性正确设置为要检查的程序集的版本号。
检查是否已为单个页启用 AJAX 功能
即使已为 Web 应用程序启用 ASP.NET AJAX 功能,也可能需要检查是否已为单个页启用 AJAX 功能。
确定是否已为网页启用 AJAX 功能
使用下面的代码可确定是否已为单个页启用 AJAX 功能。
Dim sm as ScriptManager = ScriptManager.GetCurrent(Page) If (sm is Nothing) ' ASP.NET AJAX functionality is not enabled for the page. Else ' ASP.NET AJAX functionality is enabled for the page. End IfScriptManager sm = ScriptManager.GetCurrent(Page) if (sm == null) { // ASP.NET AJAX functionality is not enabled for the page. } else { // AJAX functionality is enabled for the page. }
说明:若要确定某个页是否支持部分页呈现,可以修改此代码以使用 ScriptManager 控件的 EnablePartialRendering 和 SupportsPartialRendering 属性。