最近、私は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. 埋め込みエンティティ
- 13. リカレントニューラルネットワーク埋め込み
- 14. Python埋め込み
- 15. 埋め込みパワーバイレポート
- 16. ビデオ埋め込み
- 17. 埋め込みオーディオ
- 18. 埋め込み@フォントフェースフォントクローム
- 19. 埋め込みボットエミュレータ
- 20. 埋め込みブラウザ
- 21. ワード埋め込み、ルックアップテーブル、ワード埋め込みビジュアリゼーション
- 22. Qt Creatorの埋め込み方法埋め込みPSQL
- 23. Instagram埋め込みキャプションにHTMLを埋め込みます
- 24. mongodbへの配列の埋め込み埋め込み
- 25. Xamarinフォームの埋め込みまたはネイティブ埋め込み
- 26. 埋め込みフォントスタイリング - CSSスタイリング対埋め込みフォントスタイル
- 27. 埋め込みドキュメントの更新埋め込み
- 28. モバイルSafari、iPhone(埋め込みコールバック)の埋め込みイベント
- 29. 埋め込みプレーヤーと埋め込み用画像のコンテンツ
- 30. AS3埋め込みダイナミックオーディオファイル(複数可)/埋め込み
あなたのライブラリが私のために働いていました。ナゲットパッケージを作る努力をしてくれてありがとう。 –