2

我有这样的内容存储在数据库中

<p>This a sample text. <%= Html.ActionLink("test", "myaction", "mycontroller") %></p>

内容是我的数据存储库的一部分,这就是我想将它保存在数据库中的原因。我想知道如何在编译时渲染和执行它。

我在 asp.net mvc 项目上使用它。

谢谢你。

4

2 回答 2

3

听起来您有一行标记和源代码作为字符串存储在数据库表中的某个位置?

您是否考虑过将数据/代码/值移动到web.config中?

考虑将您的环境配置设置存储在 web.config 中。IE

 <appSettings>
   <add Name="IsProduction" value="true" />
   <add Name="RequiresSecure" value="true" />

您的控制器和模型可以读取这些值,并将环境设置传递给视图。

当您写出这些常见问题解答条目时,您可以使用简单的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。考虑“将数据保存在数据库中”的规则。

于 2010-03-31T22:19:26.220 回答
1

我相信你可以VirtualPathProvider从框架 2.0 开始使用。

您可以构建一个新类,ASP.Net 运行时将查询几乎每个请求。保持这个类紧密很重要,如果你说你将从数据库中提取,我肯定会建议实现你的系统以将这些文件本地加载到 Web 服务器上,而不是每次请求都访问数据库。此外,当您从数据库中提取该文件时,运行时可能会决定编译它……而且您也不希望每次请求都发生这种情况。

但是要回答您的原始问题,VirtualPathProvider您正在寻找它。如果需要,您也可以使用它从程序集资源中提取。

于 2013-09-26T15:40:02.437 回答