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」です。お楽しみに。