在运行时动态生成Razor视图?

18

我正在考虑构建一个可通过网络配置的布局引擎,并希望在内部直接使用razor引擎。

假设我有一些可通过类、xml或数据库获取的信息 - 我想将其转换为本地razor代码运行时(我指的是基于提供程序模型定义内容和结构的源)。不想每次请求时都动态生成xml文件之类的东西,我觉得最好还是直接编写Razor代码,让该视图引擎处理所有事情。

我能否直接从非文件系统的源将razor代码插入引擎中?

如果我在运行时动态生成.cshtml视图和布局文件并在控制器操作中动态设置这些视图,是否会有任何问题?


答案有帮助吗?你动态加载视图的尝试进行得如何? - fahadash
1个回答

19

这是可以实现的。Razor视图引擎会比经典的Webforms视图引擎更具挑战性,但下面是一些资源:

http://rebuildall.umbraworks.net/2009/11/17/ASP_NET_MVC_and_virtual_views

使用自定义VirtualPathProvider加载嵌入式资源部分视图

将ASP.Net MVC视图存储在数据库中

从数据库加载Razor视图的ASP.NET MVC

您将创建一个自定义ViewEngine来确定要查找视图的位置。 视图可以存储在文件系统中、数据库中或作为嵌入资源。请阅读我提供的链接,你就可以开始了!


1
这个答案适用于Asp.Net Core 2.2及以上吗? - Stian
1
Asp.Net Core 2.2的同样问题。 - CREM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接