2011-01-14 15 views
35

ASP.NET MVCには、新しく作成されたビューの基になる「スカフォールドテンプレート」を選択する機能があります([ビューの追加]> [強く型付けされたビューを作成]>スカフォールドテンプレート)。ASP.NET MVC 3で自分のScaffoldテンプレートを作成するにはどうすればよいですか?

独自のスキャフォールドテンプレートを作成することはできますか?そしてもしそうなら、どうですか?

+2

もちろん、リリースされて以来、これに答えることのできる人の数は、およそScott GuthrieとPhil Haackに限られています。 – Will

+1

または@Darin Dimitrov;) – jfar

+0

C:¥Program Files(x86)¥Microsoft Visual Studio 10.0¥Common7¥IDE¥ItemTemplates¥CSharp¥Web¥MVC 3¥CodeTemplates¥AddController – davethecoder

答えて

33

ASP.NET MVCはT4テンプレートを使用します。 Here's an overview。ここで

は、手順は次のとおりです。パッケージマネージャコンソールタイプで

  1. install-package mvc3codetemplatescsharp
  2. CodeTemplatesフォルダがテンプレート
を含むプロジェクトに追加されるすべての警告
  • を受け入れます

    ここから、既存のテンプレートを変更するか、新しいテンプレートを追加することができます。

    グローバルに変更する場合は、C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\フォルダでこれを変更できます。

  • +0

    これをMVC4プロジェクトにインストールすることの関連性VS2012:http://stackoverflow.com/questions/6320883/what-is-and-where-can-i-find-mvctexttemplatehost –

    11

    もちろん、ナゲットなしでT4を使用することもできます。アプリケーションウェブサイトのルート(ビューを含むプロジェクト)にフォルダを配置します。それがあるべきように、ディレクトリ構造が重要である

    \ CodeTemplates \ AddView \ AspxCsharp \ MyTemplate.tt

    あなたはCにある既存のテンプレートのいずれかから内容をコピーすることができ

    :\プログラムファイル(x86の)\マイクロソフトVisual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates \

    次に、カスタムツールという名前のTTファイルのプロパティをクリアします。これは空白にする必要があります。

    コントローラアクションを右クリックして「ビューを追加」と言うか、コントローラが別のプロジェクトに入っているので、Viewフォルダを右クリックして「ビューを追加」をクリックします。

    ドロップダウンから「強く型付けされたビューを作成」してから下に使用するタイプを入力してクリックして、「データの表示クラス:」

    最後に、「表示内容」ドロップダウンリストで、「MyTempate」を選択します。これは、フォルダを正しく入力した場合に表示されます。

    2

    あるいは、ビジュアルWeb開発者Expressの32にこれらのファイルの別の場所は、C:¥Program Files¥Microsoft Visual Studio 10.0¥Common7¥IDE¥VWDExpress¥ItemTemplates¥CSharp¥Web¥MVC 3¥CodeTemplatesです。

    4

    Visual Studio 2012 with MVC 4では、簡単な方法(インストールNugetパッケージはあなたに不完全なセットアップをもたらします。なぜなら、Nugetパッケージは悲惨なものです(2011年に最後に更新されました - おそらく、作成された日)。

    あなたはフランシス・シャナハンの答えと同等のものを使用する必要がありますが、その代わりから物事をコピーするためのパスが(64ビット)である:

    C:\プログラムファイル(x86の)11.0 \ Common7 \ \のMicrosoft Visual Studioの\ IDE \ ItemTemplates \ CSHARP \ウェブ\ MVC 4 \ CodeTemplates

    ます:

    1. あなたがアセンブリ> Extensionsで見つけることができますMicrosoft.Web.Infrastructure、への参照を追加します。

    2. コピーこれはあなたのプロジェクトのルートに(フォルダ自体を含む)フォルダをCodeTemplatesプロジェクト

    3. 今のコンパイルエラー(のような見つけることができませんMvcTextTemplateHost)

    4. を無視して、それを含めます

      追加された各ファイルのプロパティを表示し、それぞれの「カスタムツール」プロパティのテキストを削除します。あなたは(ファイルは、もはやその場で生成されませんので)すべて保存次の各ファイルへの矢印が消えます

    5. を拡張し、ビルドしないとき - コンパイラのエラーがドン場合はコンパイルエラーが

    を行って特にVisual Studioが生成した.csファイルにエラーが表示され、.ttファイルが見つからない場合は、Visual Studioを閉じ、一時フォルダを消去してから、ソリューションを再度開きます。あるケースでは、問題が解決する前に再起動しました。これは、Visual Studioが自動的にコードを生成しようとしていた.ttテンプレートの.csファイルが生成されたためです。また

    、.ttファイルの名前は少し混乱している - ここで彼らはマッピング方法は次のとおりです。

    GUI:読み取り/書き込みアクションとビューの

    空のMVCコントローラ
    MVCコントローラ、 Entity FrameworkのにEntity Frameworkのに空の読み取り/書き込みと
    APIコントローラを使用して、読み取り/書き込みアクションで空の読み取り/書き込みアクションを
    空のAPIコントローラ
    APIコントローラ、と
    MVCコントローラを使用してアクション

    CodeTemplates \ AddControllerのファイルは、それぞれマップ:

    をController.tt
    ControllerWithContext.tt
    は Controller.tt
    ApiController.tt
    は ApiControllerWithContext.tt
    ApiController.tt

    ありますif文はController.ttとApiController.ttにあり、読み取り/書き込みアクションの有無を処理します。

    ビューでは、List.ttがIndex.cshtmlを作成し、Create/Delete/Details/Edit/Index以外のビューでEmpty.ttが使用される点を除いて、名前は直感的です。

    This question covers what properties you can use in the .tt templates

    .ttテンプレートはMicrosoft T4テンプレートです。 T4 Template Syntax

    関連する問題