没有VirtualPathProvider的MVC3和虚拟视图

时间:2013-07-04 09:02:04

标签: asp.net asp.net-mvc asp.net-mvc-3 razor virtualpathprovider

我有一个MVC3应用程序,我的几个视图内容在数据库中保存为字符串。 现在我需要创建一个虚拟视图并将其返回给客户端。 我读到这可以通过VirtualPathProvider完成。 但是想知道是否可以通过RazorViewEngine来完成。

EDIT1: 我已根据此链接http://blog.rocketbase.co.uk/2011/04/asp-net-mvc-virtual-path-provider/中的建议使用了VPP。我在global.asax文件中注册了它。 我有一个非常大的网络应用程序,它有很多视图,实际上也存在于项目中。所以在global.asax中注册VPP之后我发现

  • 网络应用中的每个请求都通过此VPP进行。无论是物理还是动态视图。那么这不会有性能影响吗?我们无法通过跟踪网址来控制对VPP的调用吗?
  • 此外,我的项目中只有.cshtml文件,但mvc尝试查找.ascx,.aspx,.vbhtml等文件。我觉得这再次对性能产生负面影响。

1 个答案:

答案 0 :(得分:0)

RazorViewEngine使用虚拟路径提供程序(VPP)来查找文件。 ASP.NET中的默认VPP定位磁盘上的文件。您可以编写一个自定义VPP,从数据库中获取视图内容。如果您在ASP.NET中注册自定义VPP,那么MVC肯定能够编译,加载和呈现这些视图。

另一种方法是编写一个全新的视图引擎 - 但这并非易事。如果您不想使用VPP,那么我认为您需要编写自定义视图引擎,因为这两个内置视图引擎当然不支持此功能。