ファイルから_Layoutと通常のページビューをロードするWebアプリケーションがあり、VirtualPathProviderとオーバーライドされたVirtualFileを使用してデータベースから部分ビューをロードしようとしています。
public class RavenDbPathProvider : VirtualPathProvider {
public override bool FileExists(string virtualPath) {
if (!virtualPath.StartsWith("TextContents/")) return false;
using (var session = ObjectFactory.GetInstance<IDocumentSession>()) {
return session.Query<TextContent>().Any(w => w.Id == virtualPath);
}
}
public override VirtualFile GetFile(string virtualPath) {
if (!virtualPath.StartsWith("TextContents/"))
return base.GetFile(virtualPath);
return new RavenDbVirtualFile(virtualPath);
}
}
また、global.asaxにプロバイダーを登録します。
HostingEnvironment.RegisterVirtualPathProvider(new RavenDbPathProvider());
ただし、RavenDbPathProviderを登録すると、すべてのビュールックアップに使用されるようです。
ビューがディスク上で見つからない場合にデータベースで検索が続行されるように、複数のVirtualPathProviderを登録することは可能ですか?
そうでない場合、誰かがこれと同様のことを成功させましたか?