更新 : 2007 年 11 月
ASP.NET AJAX 機能を使用するには、Web アプリケーションをホストするサーバーのグローバル アセンブリ キャッシュ (GAC: Global Assembly Cache) に System.Web.Extensions アセンブリがインストールされている必要があります。このアセンブリが使用可能であれば、アプリケーションおよび App_Code フォルダまたはアセンブリの Bin フォルダ内の関連付けられたコントロールで AJAX 機能を使用できます。たとえば、スクリプトを登録したり、UpdatePanel コントロールを作成したりできます。
このトピックでは、次の 2 つのタスクについて説明します。
リフレクションを使用して 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 機能が有効になっているかどうかを確認することが必要な場合があります。
Web ページで 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 プロパティを使用するようにこのコードを変更します。