最近、私はpostを読んでいます。ここでは、かみそりビューを別々のライブラリにコンパイルする方法について説明しています。コンパイルせずにライブラリにビューを埋め込むことは可能ですか?次に、カスタムVirtualPathProviderを追加してビューを読み取ります。あなたの「殻」MVCプロジェクトのGlobal.asaxののApplication_Startで埋め込みカミソリビュー
4
A
答えて
1
カスタムVirtualPathProviderを登録します。
HostingEnvironment.RegisterVirtualPathProvider(new CustomVirtualPathProvider());
あなたはおそらく、いくつかのインターフェイスベース、反射、データベース検索を行うだろうので、実際の実装は、これよりももっと複雑になります
public class CustomVirtualPathProvider : VirtualPathProvider {
public override bool DirectoryExists(string virtualDir) {
return base.DirectoryExists(virtualDir);
}
public override bool FileExists(string virtualPath) {
if (virtualPath == "/Views/Foo/Index.cshtml") {
return true;
}
else {
return base.FileExists(virtualPath);
}
}
public override System.Web.Caching.CacheDependency GetCacheDependency(string virtualPath, System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart) {
if (virtualPath == "/Views/Foo/Index.cshtml") {
Assembly asm = Assembly.Load("AnotherMvcAssembly");
return new CacheDependency(asm.Location);
}
else {
return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
}
}
public override string GetCacheKey(string virtualPath) {
return base.GetCacheKey(virtualPath);
}
public override VirtualDirectory GetDirectory(string virtualDir) {
return base.GetDirectory(virtualDir);
}
public override VirtualFile GetFile(string virtualPath) {
if (virtualPath == "/Views/Foo/Index.cshtml") {
return new CustomVirtualFile(virtualPath);
}
else {
return base.GetFile(virtualPath);
}
}
}
public class CustomVirtualFile : VirtualFile {
public CustomVirtualFile(string virtualPath) : base(virtualPath) { }
public override System.IO.Stream Open() {
Assembly asm = Assembly.Load("AnotherMvcAssembly");
return asm.GetManifestResourceStream("AnotherMvcAssembly.Views.Foo.Index.cshtml");
}
}
2
:などのメタデータを引っ張る手段として、これは一般的な考え(あなたはフー・コントローラとIndex.cshtmlビューで「AnotherMvcAssembly」という名前の別のMVCプロジェクトは、埋め込みリソースとしてマークされていると仮定するだろう
私のEmbeddedResourceVirtualPathProviderはNuget経由でインストールすることができます。参照されているアセンブリからリソースをロードし、開発中にソースファイルに依存するように設定して、再コンパイルを必要とせずにビューを更新することもできます。
関連する問題
- 1. pdf埋め込み/埋め込み
- 2. 埋め込みブートストラップレイアウトの埋め込み
- 3. 埋め込みオーディオ
- 4. 埋め込み@フォントフェースフォントクローム
- 5. @埋め込みリストオブジェクトハイバーネート
- 6. 埋め込みタグ
- 7. 埋め込みブラウザ
- 8. 埋め込みリンク
- 9. 埋め込みパラメータ
- 10. 埋め込みコード
- 11. 埋め込みモノタッチデバッグ
- 12. Python埋め込み
- 13. 埋め込みドキュメントの更新埋め込み
- 14. モバイルSafari、iPhone(埋め込みコールバック)の埋め込みイベント
- 15. AS3埋め込みダイナミックオーディオファイル(複数可)/埋め込み
- 16. .netの埋め込みデータベース
- 17. 高速埋め込みデータベース
- 18. 埋め込みPDF - IE9は
- 19. Transform埋め込みビデオ
- 20. トラック埋め込みグラフは
- 21. ログイン埋め込みTomcat
- 22. HTMLにJava埋め込み
- 23. C#ゼロ埋め込み量
- 24. 埋め込み画像
- 25. Pythonの埋め込み - インポートモジュール
- 26. スプリングブート - 埋め込みTomcat
- 27. <% %>(埋め込みコードブロック)
- 28. XPSフォームの埋め込み
- 29. 埋め込みLuaのデバッグ
- 30. Skinsの埋め込みフォント
あなたのライブラリが私のために働いていました。ナゲットパッケージを作る努力をしてくれてありがとう。 –