Практическое руководство. Определение доступности функциональных возможностей AJAX ASP.NET

Visual Studio 2010

Обновлен: Ноябрь 2007

Для использования возможностей ASP.NET AJAX необходимо установить сборку System.Web.Extensions в глобальный кэш сборок сервера, на котором расположено веб-приложение. Если сборка доступна, то приложение и любые связанные элементы управления в папке App_Code или в папке сборки Bin могут использовать возможности AJAX. Например, они могут регистрировать сценарии или создавать элементы управления UpdatePanel.

В этом разделе описываются две задачи:

  • Использование отражения для проверки доступности сборки System.Web.Extensions. Эта проверка удобна при создании пользовательских элементов управления, которые работают независимо от того, установлен ли AJAX ASP.NET.

  • Использование метода GetCurrent класса ScriptManager, чтобы определить, включены ли возможности AJAX для отдельной страницы. Это полезно, поскольку сценарии, используемые в асинхронной обратной передаче, необходимо зарегистрировать вместе с элементом управления ScriptManager. В противном случае сценарии могут быть зарегистрированы с элементом управления ClientScriptManager.

Дополнительные сведения о функциональных возможностей AJAX в ASP.NET см. в разделах Общие сведения об элементе управления UpdatePanel и Общие сведения о частичной отрисовке страниц.

Использование отражения для определения доступности AJAX ASP.NET

  • Используйте следующий код для определения того, установлен ли AJAX ASP.NET в глобальном кэше сборок.

    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(ru-ru,VS.100).gifПримечание.

    Убедитесь, что атрибуту Version был присвоен правильный номер версии сборки, проверка которой осуществляется.

Даже при включении функциональных возможностей ASP.NET 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(ru-ru,VS.100).gifПримечание.

    Чтобы определить, поддерживается ли частичная отрисовка для страницы, можно изменить этот код и использовать свойства EnablePartialRendering и SupportsPartialRendering элемента управления ScriptManager.

Показ: