5

次のモデルがあるとします。

public class Item
{
    public int Id{ get; set; }
    public ItemDescription ItemDescription{ get; set; }
}
public class ItemDescription
{
    public int Id{ get; set; }
    public int Revision{ get; set; }
    public string Test{ get; set; }
}

パッケージマネージャーで次のコマンドを実行します。

Scaffold Controller Item

いくつかのビューなどを生成するために...しかし、scaffolderは複雑な/非スカラーのデータ型を無視し、その結果、ほとんど役に立たないビューを生成するようです。

足場にもう少し賢くするように指示することは可能かどうか疑問に思います。これが私が起こりたいことです:

  • スキャフォールダーは、共有フォルダーにエディター/ディスプレイテンプレートを作成します
  • EditorForこれらのテンプレートを活用するために使用します

これを実現するためのすべてのコードは、scaffolderによって生成されたように見え_CreateOrEdit.cshtmlますが、ビューに関連付けられたフォルダーに生成された「テンプレート」を使用して、私を驚かせる方法で構造化されています。私にとって、これは、scaffolderがモデルのビューを生成するより再帰的な方法に理想的に適していないコードを生成することを示唆しています。

私の期待は大きく外れていますか、それとも何かが足りませんか?

4

1 に答える 1

4

説明

VisualStudioがコードを生成するために使用するT4テンプレートは次の場所にあります。

YourPathToVisualStudio2010\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates

一般的に問題を解決するために必要なテンプレートを変更します。もう1つできることは、テンプレートを作成して、特定のプロジェクト/ソリューションに追加することです。

素晴らしいScottHanselman-T4(Text Template Transformation Toolkit)コード生成-Best Kept VisualStudioSecretの投稿をチェックしてください。

私の「詳細情報」セクションのリンクを読むことを強くお勧めします。

良い1日を!

アップデート

数日後、(mvcだけでなく)Microsoft WebStack全体(この用語ではthx scott hanselman;))がcodeplexASP.NETWebstackのオープンソースになりました。見てみな!

MVC4はRTMバージョンではありませんが、興味があるかもしれません。

Visual Studio(MVC4)でのコード生成のレシピ

新しいレシピ機能により、Visual Studioは、NuGetを使用してインストールできるパッケージに基づいてソリューション固有のコードを生成できます。Recipesフレームワークを使用すると、開発者はコード生成プラグインを簡単に作成できます。このプラグインを使用して、エリアの追加、コントローラーの追加、ビューの追加の組み込みコードジェネレーターを置き換えることもできます。レシピはNuGetパッケージとして展開されるため、ソース管理に簡単にチェックインして、プロジェクトのすべての開発者と自動的に共有できます。これらは、ソリューションごとに利用することもできます。

追加の質問をしてください。私の答えのコメント機能を使用してください。

詳しくは

于 2011-12-02T13:47:25.263 に答える