Практическое руководство. Определение доступности функциональных возможностей AJAX ASP.NET
Обновлен: Ноябрь 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.
}
Примечание. Убедитесь, что атрибуту Version был присвоен правильный номер версии сборки, проверка которой осуществляется.
Проверка включения функциональных возможностей AJAX для страницы
Даже при включении функциональных возможностей 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. }
Примечание. Чтобы определить, поддерживается ли частичная отрисовка для страницы, можно изменить этот код и использовать свойства EnablePartialRendering и SupportsPartialRendering элемента управления ScriptManager.