特集:Visual Studio 2008&ASP.NET 3.5

ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part IV

山田祥寛(http://www.wings.msn.to/
2008/04/11
Page1 Page2 Page3

 ASP.NET 3.5の新機能として、前回のPart IIIでは3つの新しいコントロールについて解説した。もう1つ忘れてはならない(というよりも、目玉ともいえる)ASP.NET 3.5の新機能が、「ASP.NET AJAX」の追加である。

 もっとも、ASP.NET AJAXは、厳密にはASP.NET 3.5での純粋な新機能ではない。ASP.NET AJAXはASP.NET 3.5のリリースに先立つこと約10カ月も前に、「ASP.NET AJAX 1.0」として単体でリリースされており、ASP.NET 2.0環境にも拡張ライブラリとして導入することが可能だった。ASP.NET 3.5では、このASP.NET AJAXが「標準で」搭載され、追加でのインストール/設定作業をしなくても利用できるようになったということにすぎない。

図1 ASP.NET AJAXの構成
サーバ・フレームワークである「ASP.NET AJAX Extensions」、クライアント・フレームワークである「Microsoft AJAX Library」がASP.NET 3.5で標準搭載された。「ASP.NET AJAX Control Toolkit」は、従来どおり、拡張ライブラリとして提供される。

 気になるASP.NET AJAX 1.0とASP.NET 3.5(のASP.NET AJAX)との機能の変更点であるが、これも基本的にベースとなる機能には変更はない。ASP.NET AJAX 1.0で作成したアプリケーションは、限りなくそのままASP.NET 3.5に移行できると考えてよいだろう*1

*1 もちろん、アセンブリ参照などWeb.configまわりの記述には変更が発生している。ASP.NET AJAX 1.0環境で作成したアプリケーションをASP.NET 3.5環境で動作させるには、Web.configの記述は最低限差し替える必要がある。

 ASP.NET 3.5におけるASP.NET AJAXの変更点は、具体的には以下のとおりだ。

  • UpdatePanelコントロールがWebParts/検証コントロールに対応

  • アプリケーションサービス・ブリッジ機能のロール・アクセスへの対応

  • Webサービス・ブリッジ機能のWCF(Windows Communication Foundation)サポート

 以下では、これら変更点について、それぞれ解説していくことにする。なお、ASP.NET AJAXそのものに関する基本的な説明については、それぞれ以下の記事が詳しいので、こちらも併せて参照いただきたい。

[参考]マルチターゲッティング機能を利用する場合の注意

 Visual Studio 2008のマルチターゲッティング機能を使って、ASP.NET 2.0+ASP.NET AJAX 1.0環境でアプリケーションを構築する場合には、注意が必要だ。というのも、VS 2008にはASP.NET AJAX対応のサイト・テンプレートが標準では用意されていないためだ。従って、デフォルトの状態ではASP.NET AJAXの動作に必要なWeb.configの記述を自分で追加する必要がある。

 そこで、VS 2008環境でASP.NET 2.0+ASP.NET AJAX 1.0プログラミングを行う場合には、あらかじめ追加テンプレートを以下のページからダウンロードしてインストールしておくとよいだろう。このテンプレートを導入することで、Web.configの記述を自動生成してくれるため、より簡単に開発を進めることが可能になる。

Microsoft ASP.NET 2.0 AJAX Templates for Visual Studio 2008

UpdatePanelコントロールの適用範囲が拡大

 ASP.NET AJAXの中核ともいえる機能を提供するのが、UpdatePanelコントロールだ。ページの部分的な更新というAjaxの最も基本ともいえる機能をコーディングレスで実現できる優れもののコントロールであるが、その分、利用に当たっては注意しなければならない点も少なくない*2

*2 UpdatePanelコントロール利用時の注意点については、「.NET TIPS:[ASP.NET AJAX]UpdatePanelコントロール利用時の注意点とは?」でも詳説しているので、併せて参照いただきたい。

 その中でも、開発に当たって特に注意しておきたいのが、

「UpdatePanelコントロールと互換性のないサーバ・コントロールがある」

という点だ。UpdatePanelコントロールは、その単純な見掛けとは裏腹に、内部的には複雑なJavaScript操作を行っている。そのため、内部的にJavaScriptを利用しているサーバ・コントロールの多くは、UpdatePanelコントロール内部では正しく動作しないのである。

 以下は、ASP.NET AJAX 1.0のUpdatePanelコントロールと互換性を持たないサーバ・コントロールである。

  • TreeView/Menuコントロール
  • WebPartsコントロール
  • FileUpload/HtmlInputFileコントロール
  • GridViewコントロール(EnableSortingAndPagingCallbacksプロパティがTrueである場合のみ)
  • ログインコントロール(テンプレートを使用していない場合)
  • Substitutionコントロール
  • 検証コントロール

 しかし、ASP.NET 3.5ではUpdatePanelコントロールの機能が改善され、WebPartsコントロールと検証コントロールについては、UpdatePanelコントロールの配下でも利用できるようになっている。

 もっとも、WebPartsコントロールについては、利用に当たって、以下のようないくつかの制限も残されているので要注意だ。

  • すべてのWebPartZoneコントロールは同じUpdatePanelコントロール配下に配置すること(ページ内に複数のUpdatePanelコントロールがある場合にも、異なるUpdatePanelコントロールにWebPartZoneコントロールを配置するのは不可)
  • WebPartManagerコントロールはページの最も外側のUpdatePanelコントロールに配置すること(入れ子になっていない場合もWebPartZoneコントロールと同じUpdatePanelコントロールに配置すること)
  • 非同期ポストバックによるパーツ情報のインポート/エクスポートは不可*3
  • 非同期ポストバックによるWebPartsコントロールのスタイル変更は不可*4
*3 パーツ情報のインポート/エクスポートに関する詳細は、別稿「.NET TIPS:[ASP.NET]ImportCatalogPartコントロールでパーツ情報をページにインポートするには?」も併せて参照してほしい。
*4 エディタパーツによるスタイル変更については、別稿「.NET TIPS:[ASP.NET] WebPartsコントロールでページ内のコンテンツを編集/再配置するには?」も併せて参照してほしい。

 検証コントロールについては、こうした細かな制約は記載されていないが、MSDNライブラリの「チュートリアル : UpdatePanel コントロールの内部での検証コントロールの使用」によると、「検証コントロール(検証サマリ コントロールを含む)は、検証対象の入力コントロールと同じパネル内に配置することをお勧めします」となっている。どのような条件での制約であるのかまでは確認できなかったが、特別な理由がない限り、推奨に従っておくのが無難だろう。

[参考]UpdatePanelコントロールの制約(HttpResponseオブジェクト)

 UpdatePanelコントロールによる非同期ポストバックで制約を受けるのは、サーバ・コントロールばかりではない。HTTP応答を担うHttpResponseクラス(System.Web名前空間)でも、以下のメソッドは非同期ポストバックのタイミングでは利用できない。

BinaryWrite Clear ClearContent ClearHeaders Close End Flush
TransmitFile Write WriteFile WriteSubstitution
非同期ポストバック時に利用できないHttpResponseクラスのメソッド

 そのほかにも、UpdatePanelコントロールには細かな制約がいくつか存在する。利用に当たっては、「UpdatePanelコントロールの概要」から「UpdatePanelコントロールと互換性のないコントロール」を一読することをお勧めしたい。



 INDEX
  Visual Studio 2008&ASP.NET 3.5
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part I
    1.JavaScriptサポートを大幅に強化
    2.外部のJavaScriptライブラリやサービス・メソッドも認識可能
    3.サービス・メソッドを利用する場合/自作ライブラリにもツール・ヒントを表示
    4.機能強化されたJavaScriptのデバッグ機能
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part II
    1.CSSサポートもますます使いやすく(1)
    2.CSSサポートもますます使いやすく(2)
    3.マルチターゲッティング機能/分割ビュー
    4.マスタ・ページのネスト機能/エクステンダ・ウィザード
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part III
    1.新しいデータアクセス・コントロール − ListViewコントロール −(1)
    2.新しいデータアクセス・コントロール − ListViewコントロール −(2)
    3.より柔軟なページャの配置を可能にする − DataPagerコントロール −
    4.ASP.NETページでLINQ機能を利用する − LinqDataSourceコントロール −
 
  ASP.NETアプリ開発者のためのVisual Studio 2008新機能 Part IV
  1.UpdatePanelコントロールの適用範囲が拡大
    2.ロール・アクセスに対応したアプリケーションサービス・ブリッジ
    3.Webサービス・ブリッジがWCFをサポート


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間