0

ファイルから_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を登録することは可能ですか?

そうでない場合、誰かがこれと同様のことを成功させましたか?

4

0 に答える 0