我有这样的内容存储在数据库中
<p>This a sample text. <%= Html.ActionLink("test", "myaction", "mycontroller") %></p>
内容是我的数据存储库的一部分,这就是我想将它保存在数据库中的原因。 我想知道如何在编译时渲染它并执行它。
我在asp.net mvc项目中使用它。
谢谢。
答案 0 :(得分:3)
听起来你有一行标记和源代码存储为数据库表中某个位置的字符串?
您是否考虑过将该数据/代码/值移至 web.config ?
考虑在web.config中存储您的环境配置设置。即。
<appSettings>
<add Name="IsProduction" value="true" />
<add Name="RequiresSecure" value="true" />
您的控制器和型号可以读取这些值,并将环境设置传递给视图。
当您写出这些FAQ条目时,您可以使用简单的if
修改输出。
<% if (Model.IsProduction) //have your ViewModel pass along whether you're in Production mode, Dev mode, URLs to have SSL, or whatever criteria you like, etc.
{%>
<!-- my production markup, with image URL, SSL'd etc. -->
<img src="https://mysite.com/img.png" />
<%}
else {%>
<!-- my other Dev markup, with image URL, etc. -->
<img src="https://myDevServer/img.png" />
<%} %>
将代码保存在数据库中通常被认为是一种不好的做法,甚至是dub-tee-eff。考虑“在数据库中保存数据”的规则。
答案 1 :(得分:1)
我相信你可以从框架2.0开始使用VirtualPathProvider
。
您可以构建一个ASP.Net运行时将查询几乎每个请求的新类。保持这个课程非常重要,如果你说你要从数据库中拔出,我肯定会建议你实现你的系统将这些文件本地加载到web服务器上,而不是每次请求都会打到数据库。此外,当您从数据库中提取该文件时,运行时可能会决定编译它...并且您也不希望每次请求都发生这种情况。
但是要回答你原来的问题,那就是你正在寻找的VirtualPathProvider
。如果需要,您也可以使用它来从装配资源中提取。