VS2008のASP.NET MVC作成サポート機能
ASP.NET MVCをインストールすることで、VS2008にASP.NET MVC開発の補助機能が拡張されます。具体的に以下の機能があります。
| 拡張機能 | 概要 |
| Add Controller/Add View | ソリューション エクスプローラ上からControllerクラスとViewPageを追加できる機能 |
| ControllerクラスとViewPageのスキャフォールディング | Modelのデータをスキャフォールディング(足場)とし、一覧、詳細、編集、作成、空(型付のみを行う)のViewPageと、Controllerクラスの雛型を作成 |
| ModelのViewPageに対する型付け | Add View機能によるViewPage追加時にModelの型を型付けする |
| コードビハインドファイルの未作成 | MVCでは、コードビハインド側に処理を書くことがほぼないため、既定ではコードビハインドファイルが作成されない |
| Go To View/Go To Controllerショートカット | ViewPageからControllerクラスへ、ControllerクラスからViewPageへのショートカット |
詳細を見ていきましょう。
Add Controller/Add View機能
従来は、ソリューション エクスプローラから項目の追加で必要な項目を追加していました。Add Controller/Add View機能はソリューションエクスプローラ上のControlersフォルダ上、Viewsフォルダ上で右クリックし、[追加]を選択した時に、[新しい項目]よりも上に表示されます(図7~8)。選択するとそれぞれが追加されます。
ControllerクラスとViewPageのスキャフォールディング
[追加]-[Controller]、[追加]-[View]を選択すると、図9~10のダイアログが表示されます。


図9のControllerクラス追加時に表示される「Add action methods for Create, Update, and Details scenarios」にチェックをつけると、関連付けられたModelの情報から一覧、詳細、編集、作成に関するメソッドの雛型を作成します。
図10のViewPage追加時には、いくつかの設定が行えます。
| 項目名 | 設定内容 |
| [チェックボックス]Create a partial view(.ascx) | ViewPage内に埋め込むユーザーコントロールを追加するかどうか(チェックしない場合はViewPage) |
| [チェックボックス]Create a strongly-typed view | 作成するViewPage(もしくはユーザーコントロール) |
| [ドロップダウンリスト]View data class | 型付けするデータクラスを選択 |
| [ドロップダウンリスト]View content | 型付けしたViewPageの表示内容を選択(一覧、詳細、編集、作成、空(型付のみを行う)) |
| [チェックボックス]Select master page | マスタページを使用するかどうか(使用する場合マスタページの場所も設定) |
| [テキストボックス]ContentPlaceHolder ID | マスタページと整合性をとるためのContentPlaceHolder IDの設定 |
スキャフォールディング(データの表示、取得などを行うための土台となる基盤)を利用したViewPageはデータの表示部分はすべて記述されます。以下は、View contentのドロップダウンリストで[Details]を選択し、PubsデータベースのPublishersテーブルを型付けした場合のソースです。
<fieldset>
<legend>Fields</legend>
<p>
pub_id:
<%= Html.Encode(Model.pub_id) %>
</p>
<p>
pub_name:
<%= Html.Encode(Model.pub_name) %>
</p>
<p>
city:
<%= Html.Encode(Model.city) %>
</p>
<p>
state:
<%= Html.Encode(Model.state) %>
</p>
<p>
country:
<%= Html.Encode(Model.country) %>
</p>
</fieldset>
<p>
<%=Html.ActionLink("Edit", "Edit", new { id=Model.pub_id }) %> |
<%=Html.ActionLink("Back to List", "Index") %>
</p>
後は、Controllerクラスに詳細部分を取得するコードを記述するだけです。
public ActionResult Details(string id)
{
pubsEntities pubs = new pubsEntities();
var publish = (from p in pubs.publishers
where p.pub_id == id
select p).First();
return View(publish);
}
スキャフォールディングにより、Detailsメソッドの雛型だけはできていたので、pubsEntitiesのインスタンス化と、それに対して、パラメタとして渡されたidを条件に、LINQを行っています。該当の1レコードのみFirstメソッドで取得後ViewDataに格納し、Details.ViewPageを返しています。
他のメソッドも同様にして対応可能です。
Go To View/Go To Controllerショートカット
MVCによる開発を行う際、度々ViewとControllerを行き来します。都度、マウスを操作し、タブを切り替えるなどの作業は煩雑です。Go To View/Go To Controllerショートカットはマウスを使うことなく、Viewと該当のControllerの行き来を行えます。
ショートカットキーは[Ctrl]+[M]、[Ctrl]+[G]です(Ctrlキーを押したままM→GでもOK)。右クリックメニューでも表示されますが、ASP.NET MVCを利用して本格的な開発を進めるのであれば、ショートカットキーを身につけましょう。
ASP.NET MVC Design Gallery
ASP.NET MVCは既定のプロジェクトでマスタページ、CSSを保持していますが、開発者たちがマスタページやCSSを新規で作りだす時間や労力を抑えることができるデザイン・ギャラリーというページがASP.NET公式ページ上で公開されました。全部で20以上のデザインテンプレートが現在ホストされているのでアプリケーションにあったテンプレートがあればダウンロードし、利用できます。ただし、現在公開されているデザインテンプレートはRC段階で公開されたもので、RTWではそのまま利用できません。
以下の手順を行うことで、RTWにデザインテンプレートを適用できます。
- ASP.NET MVCデザインギャラリーから利用したいデザインテンプレートをダウンロード
- Zip形式でダウンロードできるので任意の場所に解凍(VB/C#フォルダ内にContent/Views/Helpersフォルダが展開される)
- ASP.NET MVCプロジェクトを作成(VB/C#どちらででもOK)
- 解凍したContent/View/Helpers フォルダ内の項目を、MVCプロジェクトに追加する(Helpersフォルダは新しく作成)
- Site.Masterのページディレクティブの記述を次のように変更(VBならLanguage="VB")
- Site.Masterページの
<Title>タグ内に<asp:ContentPlaceHolder ID="TitleContent" runat="server"/>を追記 - Loginという記述を"LogOn"へと変更する。それに伴い、ログイン情報を表示させたい場合は
<% Html.RenderPartial("LogOnUserControl"); %>という記述を表示したい場所に追記
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
実際に適用して実行すると図11のようになります(デザインBlue Bubblesを選択)。
まとめ
今回はASP.NET MVCを利用した開発を行う際の最低限のポイントを紹介しました。最低限と書いている通り、今回の内容を押さえていれば簡単なアプリケーションは作成できますが、まだまだ多くの機能がASP.NET MVCにはあります。
次回は、今回の内容を踏まえてスキャフォールディング機能を実装するサンプルアプリケーションを作成します。お楽しみに。



