1

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

EDIT1:我已按照此链接http://blog.rocketbase.co.uk/2011/04/asp-net-mvc-virtual-path-provider/中的建议使用了 VPP 。我在 global.asax 文件中注册了它。我有一个相当大的网络应用程序,它有许多实际存在于项目中的视图。因此,在 global.asax 中注册 VPP 后,我发现

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

1 回答 1

0

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

另一种方法是编写一个全新的视图引擎——但这不是一件容易的事。如果您不想使用 VPP,那么我认为您需要编写自定义视图引擎,因为两个内置的视图引擎肯定不支持这一点。

于 2013-07-05T03:21:13.607 回答