miso_soup3 Blog

主に ASP.NET 関連について書いています。

コントローラーとビューのテンプレートを編集する in ASP.NET MVC(& Web API)

Visual Studio で ASP.NET MVC のコントローラーやビューを追加する際、右クリックメニューより追加を行うことで、ある程度コードが記述されたものを用意できます。

コントローラーの追加:
f:id:miso_soup3:20131014013708p:plain

ビューの追加:
f:id:miso_soup3:20131014013713p:plain

このときに自動生成されるコードは、全体あるいはプロジェクト単位でカスタマイズできます。Visual Studio 2010 の時代より、Express も含めて対応しています。

また、Visual Studio 2013 からは、スキャフォールディングビューという新しい追加方法で、コントローラーやビューを追加します。

f:id:miso_soup3:20131014014755p:plain

この Visual Studio 2013 においても 2010 や 2012 と同様に、自動生成されるコードをカスタマイズできます。

今回は、”コントローラーの追加”で自動生成されるコードを、Visual Studio 2012 と Visual Studio 2013 RC にて、”プロジェクト単位”でカスタマイズする方法を記載しようと思います。

Visual Studio 2012 の場合

ASP.NET MVC 4 のプロジェクトを用意します。

ファイル>新しいプロジェクト>ASP.NET MVC 4 Web アプリケーション>OK、
テンプレートの選択:「基本」>OK。

プロジェクト用の .tt ファイルを用意します。

下の場所に該当する「CodeTemplates」フォルダを、作成したプロジェクト配下に”コピー”します。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates

(MVC 3 や、Visual Studio 2010 の場合はパスが違うので注意)

f:id:miso_soup3:20131014020523p:plain

↓コピー後のソリューションエクスプローラ

f:id:miso_soup3:20131014020715p:plain

コピーしたフォルダを展開し、下のように全ての .tt ファイルのプロパティ設定「カスタムツール」を”空”にします。(元の値は、「TextTemplatingFileGenerator」です。)

f:id:miso_soup3:20131014030354p:plain

カスタマイズしたい .tt ファイルを編集します。

プロジェクト配下にて、「CodeTemplate」フォルダ>「AddController」フォルダ配下の「Controller.tt」(テンプレート「空の MVC コントローラー」に該当する .tt ファイル)を開き、したのように MyMethod() メソッドを追加します。

f:id:miso_soup3:20131014022100p:plain
(コードがハイライトされているのは、T4 Editor によるものです。)

編集後保存します。

カスタマイズした結果を試してみます。

「Controller」フォルダを右クリック>追加>コントローラー でダイアログを表示し、コントローラー名は適当な名前を、テンプレートは「空の MVC コントローラー」を選択し、追加ボタンを押します。

自動生成されたコードに、MyMethod() メソッドが追加されていることが確認できます。

f:id:miso_soup3:20131014022705p:plain

Visual Studio 2013 RC の場合

Visual Studio 2013 RC もほぼ同様の手順で行うことができます。
(※製品版とは異なる可能性があります。)

ASP.NET プロジェクトを作成します。

ファイル>新規作成>プロジェクト>ASP.NET Web アプリケーション>OK、
テンプレートの選択:MVC、
「プロジェクトの作成」をクリック。

プロジェクト用の .tt ファイルを用意します。

下の場所に該当する「Templates」フォルダ(CodeTemplates フォルダではない)を、作成したプロジェクト配下に”コピー”し、「CodeTemplates」に”リネーム”します。

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates

f:id:miso_soup3:20131014024221p:plain

カスタマイズしたい .t4 ファイルを編集します。

プロジェクト配下の「CodeTemplates」フォルダ>「MvcControllerEmpty」フォルダの「Controller.cs.t4」を開き、したのように、MyFavoriteMethod() メソッドを追加します。

f:id:miso_soup3:20131014024656p:plain

編集後保存します。

カスタマイズした結果を試してみます。

「Controller」フォルダを右クリック>追加>スキャフォールディングビュー でダイアログを表示し、「MVC 5 コントローラー - 空」を選択し、追加を押します。

f:id:miso_soup3:20131014024851p:plain
(右側に、テンプレートIDっぽいものが表示されてます)

適当なコントローラー名を入力してOKした後、MyFavoriteMethod() メソッドが追加されていることが確認できます。

f:id:miso_soup3:20131014025053p:plain

その他

ビューでは、.tt ファイルを追加することで、テンプレートの種類を追加することができます。

f:id:miso_soup3:20131014025431p:plain

また、MVC だけでなく Web API でも同様にカスタマイズできます。
namespace の追加やメソッドの準備など、また、コードを解析することで具体的な処理まで、素早くコードを用意することができそうです。