ASP.NET MVCにおけるAJAX対応
Preview 4からASP.NET MVCでもAJAX対応がされました。ASP.NET AJAX(Extensions/Control Toolkit)とASP.NET MVCの相性はポストバックの非利用という点からも推測できるかと思いますが、相性はよくありません。しかし、AjaxHelperクラス、AjaxExtensionsクラスが用意されました。
| メソッド | 概要 |
| ActionLink | Ajaxを利用した”文字列”を返すハイパーリンクを生成 |
| Form | Ajaxを利用したViewや文字列を返すフォームを生成 |
HtmlHelperクラスに比べて、AjaxHelperクラスは利用できるメソッドが少なく、2種類しかありません。また、ActionLinkは文字列だけを、Formは解放が必要なViewや文字列しか利用できません。つまり、まだAjaxHelperクラスは発展途上であると言えます。
なお、AjaxExtensionsクラスには現在、IsMvcAjaxRequestメソッドという拡張メソッドのみ存在します。このメソッドはAJAXによるリクエストかどうかを判別します。このメリットとして、AjaxHelperクラスによるAJAXリクエストを判定し、ページの中でAJAXを利用したユーザーコントロールの部分更新が可能になります。実際の活用サンプルは次のようになります。
Formメソッドを利用したサンプル
実行した画面は図12~13のようになります。ユーザーコントロールは、テーブルタグに画像と文字を埋め込んだだけのあまり意味の無いサンプルなので、割愛させていただきます。詳しくはサンプルを参照ください。


コントローラ側の処理はこちら。
public ActionResult Index() { ViewData["Title"] = "Home Page"; ViewData["Message"] = "Welcome to ASP.NET MVC!"; //非同期通信の判定 if (Request.IsMvcAjaxRequest()) { //VUC.ascxを返す return View("VUC"); } //同期通信の場合はIndex.aspxを返す return View(); }
フォーム側の処理はこちら。
<%--Ajax.Form(Actionメソッド名 , AjaxOptions { UpdateTargetId=Ajax動作の対象要素ID}) --%> <% using (Ajax.Form("Index",new AjaxOptions { UpdateTargetId = "UCPanel" })) { %> <div id="UCPanel"></div> <%-- ボタンクリック時にIndexメソッドを経由する --%> <input type="submit" value="Button" /> <% } %>
ActionLinkメソッドと、IsMvcAjaxRequestメソッドを利用したサンプル
実行した画面は図14~15のようになります。


コントローラ側の処理はこちら。
[OutputCache(Duration=5)] public string WhatTime() { return DateTime.Now.ToString(); }
フォーム側の処理はこちら。
<%-- Ajax.ActionLink(リンクテキスト,Actionメソッド名 ,
AjaxOptions { UpdateTargetId=Ajax動作の対象要素ID}) --%>
<%= Ajax.ActionLink("現在時刻表示", "WhatTime",
new AjaxOptions { UpdateTargetId = "TimeDate" })%>
<div>時間:<span id="TimeDate"></span></div>
またAJAX専用クラスの他に、クライアントスクリプトとして、Microsoft AJAX Libraryの標準サポートが行われました(今後jQueryもサポート予定)。
まとめ
前後編に渡って解説を行ってきましたが、コツさえつかめば、従来のASP.NETで手が届かなかった部分の開発などが、ASP.NET MVCを利用することで簡単に行えます。また、現在Preview 4までリリースされていますが、次のバージョンはBetaになるであろうと、Scott Guthrieさんはコメントしています。これからリリースにかけて新機能や名前空間の変更などがあるかと思いますが、正式リリースを楽しみに待ちましょう。
なお、ASP.NET AJAXがBetaから正式版にかけてさまざまな変更があったように、ASP.NET MVCフレームワークにも変更点があることには、注意が必要です(現在はPreview 4)。
次回から、リリースされたばかりのVisual Studio 2008 Service Pack1の追加機能について解説します。最初は、簡単にデータドリブンアプリケーションが構築できる「ASP.NET Dynamic Data Application」です。お楽しみに。
