将动态字符串渲染为Razor

Noa*_*ley 1 c# asp.net-mvc razor

我正在尝试渲染存储在我的数据库中的字符串,就像它来自CSHTML文件一样.这是我想呈现的示例字符串:

<footer>
    <div class="content-wrapper">
        <div class="float-left">
            <p>&copy; @DateTime.Now.Year - My ASP.NET MVC Application</p>
        </div>
    </div>
</footer>
Run Code Online (Sandbox Code Playgroud)

请注意"@ DateTime.Now.Year"?好吧,如果将它存储在数据库中,我将如何将其渲染到视图中并将其中的一部分实际呈现为2014年(或者您正在阅读此内容的那一年)?

Pet*_*ter 5

你可以使用RazorEngine(NuGet包"RazorEngine").

包管理器控制台:

PM> install-package razorengine
Run Code Online (Sandbox Code Playgroud)

在你的代码中:

string template = GetYourTemplateFromDatabase();
string content = RazorEngine.Razor.Parse(template, null);
Run Code Online (Sandbox Code Playgroud)

如果要将此输出添加到实际视图中,则必须将其添加为IHtmlString或使用@Html.Raw(ViewBag.Content):

控制器代码(for IHtmlString):

ViewBag.DatabaseCode = MvcHtmlString.Create(content);
Run Code Online (Sandbox Code Playgroud)

查看代码:

<div>
    @ViewBag.DatabaseCode
</div>
Run Code Online (Sandbox Code Playgroud)