如何:确定 ASP.NET AJAX 功能是否可用

更新: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 SyncLock
    
    Private 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.
    

    }

    Bb907614.alert_note(zh-cn,VS.90).gif说明:

    请确保已将 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 If
    
    ScriptManager 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.
    }
    
    Bb907614.alert_note(zh-cn,VS.90).gif说明:

    若要确定某个页是否支持部分页呈现,可以修改此代码以使用 ScriptManager 控件的 EnablePartialRenderingSupportsPartialRendering 属性。

请参见

概念

ASP.NET AJAX 概述