是否可以从数据库而不是从磁盘上的文件加载视图?它不一定是数据库,可以是任何字符串。
我想我问这个问题太早了…我仍然期待任何答案,但我肯定会做更多的研究第一。
编辑
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>
希望这能帮助其他人做同样的事情。