ViewDataの利用方法
MVCのもう1つの肝の部分としてViewDataが挙げられます。ASP.NET MVCはポストバックとViewStateから脱却し、ルーティングによるURLマッピングが行えるようになりました。それではController
クラスからViewページにどのようにしてデータを渡すのでしょうか? ASP.NET MVCではUIとビジネスロジックを分離するキーとなるデータを「ViewData」と呼び、これを利用してデータの受け渡しを行います。
ViewDataの特徴
ASP.NET MVCで利用されるViewDataはDictionary
クラスを継承した「System.Web.MVC.ViewDataDictionary
クラス」を利用しています。基本的な利用方法はDictionary
クラスと変わらないので、キーとデータを同時に指定することで、データを格納します。このViewDataを利用してController
クラスからViewページへ渡すデータを紐付けることができます。
また、ViewDataはModelから取得したデータオブジェクトを格納できるModel
プロパティも持ちます。これにより、LINQ to SQLを利用したデータをViewDataに格納し、Viewページに表示できます。
public ActionResult Titles() { // ViewDataにキーと値を格納 ViewData["Hello"] = "Hello, MVC Framework!"; // Titleキーを利用するとブラウザのタイトルとして表示される // この場合はTitle Onlyが表示 ViewData["Title"] = "Title Only"; // titlesテーブルの中からroyaltyが10以上の項目を取得 var pubs = from p in pubsdatacontext.titles where p.royalty > 10 select p; // Viewについては後述第二パラメタに // ViewDataのModelを渡すことができる // Publisher.aspxページに、 // 上記のLINQ結果をパラメタとしてルーティング return View("Publisher", pubs.ToList()); }
URLルーティング・ViewDataはASP.NET MVCを扱う上で最低限必要なキモとなるので実際に触れる前にポイントを押さえましょう。
サンプルアプリケーションの作成
さて、URLルーティングとViewDataという2種類のキモに関する解説も行ったので、実際にサンプルアプリケーションを作成してみましょう。今回は、URLルーティング・ViewDataの扱い方を学ぶためのチュートリアルなので、テスト部分は次回解説したいと思います。今回はサンプルデータベースとしてPubsを利用します。サンプルを実行する際には、記事内のテーブルを準備してください。
サンプルアプリケーションの目的と学習できる項目
- ASP.NET MVCのソリューションを理解する
- ルーティングルールを設定する
Controller
クラスの記述方法を知るController
クラスでViewDataにデータを格納する- ViewPage上の表示方法を学ぶ
- ViewPage上でViewDataに格納したデータを取り出す
プロジェクトの作成
VS 2008でASP.NET MVCアプリケーションを作成します。[ファイル]-[プロジェクトの作成]-[Visual C#(Basic)]-[Web]-[ASP.NET MVC Web Application]を選択し、プロジェクト名を付け、[OK]をクリックします(図6)。
プロジェクト作成時のソリューション エクスプローラは次のようになります(図7)。
Model・View・Controllerフォルダが作成され、最低限の設定を行ったファイルが配置されています。それぞれ解説しながらアプリケーションを作成していきたいと思います。
なお、作成されたプロジェクトはそのまま実行することができるので、初めてプロジェクトを作成した時に実行して確認してみてください。