2017-08-09 4 views
0

.NET CoreAsp.Net MVCというWebアプリケーションを作成しました。.NETコアの別のアプリケーションにかみそりビューを配布する方法

このアプリケーションにはRazor Viewsが含まれていますが、これらのビューをDLLなどのミドルウェアなどの別のアプリケーションに共有したいと考えています。

var assembly = typeof(Project.HomeController).GetTypeInfo().Assembly; 

services.AddMvc() 
     .AddApplicationPart(assembly); 

これは非常にうまく動作しますが、私はそうではない:https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts

私はこのようなコントローラを追加しようとした - ここで

は分布Controllersが、特別な周りViews何もない例に関するいくつかの情報がありますビューを追加する方法を知っている。

Razor Viewsを別のアプリケーションに配布するにはどうすればよいですか?それはMVC middlewareにミドルウェアのようにそれらをインポートするのですか?あなたは、通常のnetstandard1.6ライブラリ - すなわち、あなたのコントローラがあり、かつ、以下のものを使用して、あなたのcsprojでそのDLLにビューリソースを埋め込む作成することができます

+0

最初の質問は、なぜこれをしたいですか?それらのコントローラーを使用せずにビューを配布します。また、コントローラを配布する場合は、コントローラとビューを同じアセンブリに配置しないでください。ビューは常にコントローラー固有のものなので、ビューを再利用するとバッキングコントローラーなしでほとんど価値はありません。また、ビューをアセンブリとして配布することで、消費者がテンプレートをカスタマイズすることができなくなります(特定の情報の追加や削除など) – Tseng

+0

アプリケーションの一部を特定のグラフィックデザインと再利用したいと思います。ビューはコントローラのような同じアセンブリ内にありますが、起動時に別のアプリケーションにビューを追加する方法がわかりません。コントローラを使用してビューを特定のアプリケーションに接続する方法をいくつか例示できますか? – Jenan

+0

@ Tseng質問を更新しました。コントローラーを追加すると非常にうまくいきますが、どのようにビューを追加できますか? :) – Jenan

答えて

1

:その後

<ItemGroup> 
    <EmbeddedResource Include="Views\**\*.cshtml" /> 
    </ItemGroup> 

を、あなたがして登録することができますこれらRazorViewEngineOptionsを使用した:「ClassInLibraryは」あなたがしてからアセンブリ情報を取得することができ、あなたのライブラリ内のクラスである

// Add views provided in this assembly.  
services.Configure<RazorViewEngineOptions>(options => 
{ 
    options.FileProviders.Add(
     new EmbeddedFileProvider(typeof(ClassInLibrary).GetTypeInfo().Assembly)); 
}); 

+0

私はこれらのステップを試しましたが、この行では '新しいEmbeddedFileProvider(typeof(ClassInLibrary).GetTypeInfo()。Assembly)); ' - 私はエラー" ClassInLibrary "を取得します。これは名前空間だけです。これらの名前空間のリスト項目を試してみたら、私はControllersクラスしか持っていませんでした。 – Jenan

+0

@ジェナン私が説明したように、ClassInLibraryは私が作ったタイプです。これは、作成中のライブラリにあるクラス(コントローラの1つなど)になります。 – Jack

+0

OK、今すぐ表示されます。 :) – Jenan

関連する問題