我尝试渲染存储在我的数据库中的字符串,就像它来自CSHTML文件一样。这是我想呈现的示例字符串:
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>© @DateTime.Now.Year - My ASP.NET MVC Application</p>
</div>
</div>
</footer>
请注意&#34; @ DateTime.Now.Year&#34;?好吧,如果将它存储在数据库中,我将如何将其渲染到一个视图中,并将其中的一部分实际呈现为2014年(或者无论哪一年,您都在阅读此内容)?
答案 0 :(得分:5)
您可以使用RazorEngine(NuGet包“RazorEngine”)。
软件包管理器控制台:
PM> install-package razorengine
在您的代码中:
string template = GetYourTemplateFromDatabase();
string content = RazorEngine.Razor.Parse(template, null);
如果您要将此输出添加到实际视图中,则必须将其添加为IHtmlString
或使用@Html.Raw(ViewBag.Content)
:
控制器代码(适用于IHtmlString
):
ViewBag.DatabaseCode = MvcHtmlString.Create(content);
查看代码:
<div>
@ViewBag.DatabaseCode
</div>
答案 1 :(得分:0)
你需要在剃须刀中定义一个模型 这是一个很好的例子http://weblogs.asp.net/scottgu/asp-net-mvc-3-new-model-directive-support-in-razor
答案 2 :(得分:0)
如果我理解正确,您将整个HTML片段存储在数据库中?你可以对从数据库中获得的字符串做一个简单的String.Replace
。
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>© {{YEAR}} - My ASP.NET MVC Application</p>
</div>
</div>
</footer>
然后在视图中:
@Html.Raw(Model.Footer.Replace("{{YEAR}}", DateTime.Now.Year))