渲染动态字符串为剃刀
本文关键字:剃刀 字符串 动态 | 更新日期: 2023-09-27 18:06:36
我试图呈现存储在我的数据库中的字符串,就好像它来自CSHTML文件一样。这里是一个示例字符串,我想渲染:
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>© @DateTime.Now.Year - My ASP.NET MVC Application</p>
</div>
</div>
</footer>
注意"@DateTime.Now.Year"?如果这被存储在数据库中,我该如何渲染到视图中让这部分渲染为2014年(或你正在阅读这篇文章的年份)
您可以使用RazorEngine (NuGet包"RazorEngine")。
Package Manager Console:
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>
你需要在razor中定义一个模型这是一个很好的例子http://weblogs.asp.net/scottgu/asp-net-mvc-3-new-model-directive-support-in-razor
如果我理解正确,您将整个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))