15

ソース管理(SVN)の外部フォルダーとして保持したいmvcプロジェクトのテンプレートの標準セットがあります

これは、プロジェクト固有のファイルが間違った場所にコミットされるため、このフォルダーに配置できないことを意味します.. ..標準テンプレートは、MVC自体が使用するテンプレートをオーバーライドする必要があるため、MVCの場所に配置する必要がありますテンプレートのオーバーライドが必要です(例:〜/ Views / Shared / EditorTemplates)

では、プロジェクト固有のものをどこに置くことができますか?

たとえば、それらを〜/ Views / Shared / SiteEditorTemplatesに配置して、検索へのパスを追加する必要がありますか?どうすればいいですか?または他の提案?

ありがとう、アリ

4

3 に答える 3

20

はい、わかった

mvc のエディター コードは、パスに DisplayTemplates または EditorTemplates を追加するエンジンの PartialViewLocationFormats でエディターを探します。

ビューの下に新しいパスを作成しました ~/Views/Standard/

そこに私の標準的なものを入れました ~/Views/Standard/EditorTemplates/string.cshtml

ここで、エンジンの新しいパスを global.asax Application_Start に登録します。

protected void Application_Start() {
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    ViewEngines.Engines.Clear();
    var viewEngine = new RazorViewEngine {
        PartialViewLocationFormats = new[]
        {
            "~/Views/{1}/{0}.cshtml",
            "~/Views/Shared/{0}.cshtml",
            "~/Views/Standard/{0}.cshtml"
        }
    };

    ViewEngines.Engines.Add(viewEngine);
}

これにより、Web フォーム ビュー エンジンと VB パスが削除されることに注意してください。

これにより、SVN の ~/Views/Standard の外部と、必要に応じてプロジェクトのものをオーバーライドすることができます。

于 2011-04-07T14:42:15.390 に答える
4

~/Views/Shared/EditorTemplates個人的には、特定のテンプレートを NuGet パッケージとして外部化し、新しい ASP.NET MVC プロジェクトを開始するたびに、この NuGet パッケージをインポートするだけで、デフォルトのものをオーバーライドするためにテンプレートをそれぞれの場所 ( ) にデプロイします。

于 2011-04-07T13:28:54.603 に答える