代码之家  ›  专栏  ›  技术社区  ›  Buildstarted

从数据库而不是文件中提取视图

  •  12
  • Buildstarted  · 技术社区  · 14 年前

    是否可以从数据库而不是从磁盘上的文件加载视图?它不一定是数据库,可以是任何字符串。

    我想我问这个问题太早了…我仍然期待任何答案,但我肯定会做更多的研究第一。

    编辑

    public class DbPathProvider : VirtualPathProvider {
        public DbPathProvider() : base() {
    
        }
    
        public override bool FileExists(string virtualPath) {
            if (virtualPath.StartsWith("/test") || virtualPath.StartsWith("~/test"))
                return true;
    
            return base.FileExists(virtualPath);
            //deal with this later
        }
    
        public override VirtualFile GetFile(string virtualPath) {
            if (virtualPath.StartsWith("/test") || virtualPath.StartsWith("~/test"))
                return new DbVirtualFile(virtualPath);
    
            return base.GetFile(virtualPath);
            //deal with this later
        }
    
        public class DbVirtualFile : System.Web.Hosting.VirtualFile {
    
            public DbVirtualFile(string path) : base (path) {
                //deal with this later
            }
    
            public override System.IO.Stream Open() {
                return new System.IO.MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes("this is a test"));
            }
        }
    }
    

    更新

    玩了一会儿,我发现了一些有趣的东西。如果我移除 return base... FileExists() GetFile() 方法并仅返回true&我的 DbVirtualFile 对返回的文件进行分析,并按预期输出(比如我把 <%:DateTime.Now.ToString()%> )-然而,当我添加测试并返回基时,它并没有输出DbVirtualFile中任何内容的文本字符串(上帝啊,我希望这是有意义的)-有什么想法吗?

    最终

    @inherits System.Web.Mvc.WebViewPage<dynamic>

    希望这能帮助其他人做同样的事情。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Community Nick Dandoulakis    7 年前

    是的,但是你必须创建一些新的提供者。 Here 是一个基本上做相同事情的问题,除了嵌入的文件。 This