ScottGu 提到我们应该能够从数据库加载 Razor 视图(查看评论部分),那么有人有关于如何做到这一点的示例吗?
Thanks.
您可能想检查从数据库而不是文件中提取视图 or 使用 VirtualPathProvider 从 DLL 加载 ASP.NET MVC 视图
从我之前关于该主题的问题中获取代码。
In your FileExists()
另一页上的方法将我在那里的测试代码替换为一些数据库代码,这些代码实际上检查 virtualPath 在数据库中是否有条目。你的数据库看起来像:
Views --tablename
Path --view's virtual path
SomeOtherValue
...然后你的电话就会像这样
public class DbPathProvider : VirtualPathProvider {
public DbPathProvider() : base() {
}
public override bool FileExists(string virtualPath) {
Database db = new Database();
return db.Views.Any(w => w.Path == virtualPath);
}
public override VirtualFile GetFile(string virtualPath) {
return new DbVirtualFile(virtualPath);
}
}
现在我们修改DbVirtualFile
public class DbVirtualFile : System.Web.Hosting.VirtualFile {
public DbVirtualFile(string path) : base (path) {
}
public override System.IO.Stream Open() {
Database db = new Database();
return new System.IO.MemoryStream(
db.Views.Single(v => v.Path == this.VirtualPath));
}
}
如果您不希望,虚拟路径不必对应于真实的文件系统。您可以通过实现这两个类来重写功能。
然后,您可以像这样在 global.asax 中注册新的 VirtualPathProvider
HostingEnvironment.RegisterVirtualPathProvider(new DbPathProvider());
我希望这能更好地回答你的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)