コントローラーとビューのテンプレートを編集する in ASP.NET MVC(& Web API)
Visual Studio で ASP.NET MVC のコントローラーやビューを追加する際、右クリックメニューより追加を行うことで、ある程度コードが記述されたものを用意できます。
コントローラーの追加:
ビューの追加:
このときに自動生成されるコードは、全体あるいはプロジェクト単位でカスタマイズできます。Visual Studio 2010 の時代より、Express も含めて対応しています。
また、Visual Studio 2013 からは、スキャフォールディングビューという新しい追加方法で、コントローラーやビューを追加します。
この 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 の場合はパスが違うので注意)
↓コピー後のソリューションエクスプローラ
コピーしたフォルダを展開し、下のように全ての .tt ファイルのプロパティ設定「カスタムツール」を”空”にします。(元の値は、「TextTemplatingFileGenerator」です。)
カスタマイズしたい .tt ファイルを編集します。
プロジェクト配下にて、「CodeTemplate」フォルダ>「AddController」フォルダ配下の「Controller.tt」(テンプレート「空の MVC コントローラー」に該当する .tt ファイル)を開き、したのように MyMethod() メソッドを追加します。
(コードがハイライトされているのは、T4 Editor によるものです。)
編集後保存します。
カスタマイズした結果を試してみます。
「Controller」フォルダを右クリック>追加>コントローラー でダイアログを表示し、コントローラー名は適当な名前を、テンプレートは「空の MVC コントローラー」を選択し、追加ボタンを押します。
自動生成されたコードに、MyMethod() メソッドが追加されていることが確認できます。
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
カスタマイズしたい .t4 ファイルを編集します。
プロジェクト配下の「CodeTemplates」フォルダ>「MvcControllerEmpty」フォルダの「Controller.cs.t4」を開き、したのように、MyFavoriteMethod() メソッドを追加します。
編集後保存します。
カスタマイズした結果を試してみます。
「Controller」フォルダを右クリック>追加>スキャフォールディングビュー でダイアログを表示し、「MVC 5 コントローラー - 空」を選択し、追加を押します。
(右側に、テンプレートIDっぽいものが表示されてます)
適当なコントローラー名を入力してOKした後、MyFavoriteMethod() メソッドが追加されていることが確認できます。
その他
ビューでは、.tt ファイルを追加することで、テンプレートの種類を追加することができます。
また、MVC だけでなく Web API でも同様にカスタマイズできます。
namespace の追加やメソッドの準備など、また、コードを解析することで具体的な処理まで、素早くコードを用意することができそうです。