如何从数据库加载一些视图,以及从MVC4中的文件加载其他视图

时间:2013-02-08 15:44:38

标签: c# asp.net-mvc-4 virtualpathprovider

我有一个Web应用程序从文件加载_Layout和正常的页面视图,我现在尝试使用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中注册了Provider:

HostingEnvironment.RegisterVirtualPathProvider(new RavenDbPathProvider());

然而,当我注册RavenDbPathProvider时,似乎它被用于所有视图查找。

是否可以注册多个VirtualPathProviders,以便在磁盘上找不到视图时,搜索将在数据库中继续?

如果没有,有没有人做过类似的事情并取得成功?

0 个答案:

没有答案