c# - 使用 MVC 渲染带有嵌入式 Razor 变量的动态 HTML

标签 c# html asp.net-mvc asp.net-mvc-4 razor

我有一些编码的 Html,其中嵌入了任意数量的 1000 个不同的 Razor 变量,我已经存储这些变量并需要从数据库中检索。我希望能够在 MVC/razor View 中呈现它。

只是保存在数据库中的 html 的一个简单示例(它可以更复杂):

"<span>Your page is @Config.PageColour and you have page size of @Config.PageSize</span>"

MessageController.cs

public ActionResult ShowMessage()
{
    var htmlToDisplay = _messageDAL.getHtmlMessage();
    var messageVm = new MessageVm
    {
        DisplayMessage = htmlToDisplay;
    };

    return View("Index.cshtml", "", messageVm);
}

Index.cshtml

<html>
    @Html.Raw(@model.DisplayMessage)
</html>

结果

当我运行它时,呈现的页面如下所示:

Your page is @Config.PageColour and you have page size of @Config.PageSize

但我希望它用 html block 解释 Razor 变量的值并且应该如下所示:

Your page is Blue and you have page size of A4

真的坚持这一点,所以任何帮助将不胜感激!

最佳答案

使用这一行。我希望这可能有所帮助。

@Html.Raw(System.Web.HttpUtility.HtmlDecode(@model.DisplayMessage))

编辑 1

您可以使用下面提到的任何 Razor 编译器

Razor 引擎:

string result = RazorEngine.Razor.Parse(@model.DisplayMessage, new { Name = "Name" });

RazorEngine 不支持任何 Mvc 助手,例如 Html 和 Url。由于这些库应该存在于 Mvc 之外,因此需要做更多的工作才能让它们与这些助手一起工作。**

编辑 2

您可以使用 Razor 编译器,它允许您使用名为 RazorEngine 的 HTML 模板,可以在 https://github.com/Antaris/RazorEngine 找到它。

Visual Studio 中,使用 Package Manager Console 命令:

Install-Package RazorEngine

安装后我改变了我的 Controller 如下:

MessageController.cs

public ActionResult ShowMessage()
{
    var htmlTemplate = _messageDAL.getHtmlMessage();

    var htmlToDisplay = Engine.Razor.RunCompile(htmlTemplate , "messageTemplateKey", null, new { Name = "some model data" });

    var messageVm = new MessageVm
    {
        DisplayMessage = htmlToDisplay;
    };

    return View("Index.cshtml", "", messageVm);
}

关于c# - 使用 MVC 渲染带有嵌入式 Razor 变量的动态 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32990996/

相关文章:

jquery - MVC WebGrid 在其表格之前呈现 AJaX 脚本。如何在脚本部分强制生成脚本

c# - SQL Server 管理对象 (SMO) 的默认约束不一致

c# - 转换 double 值以创建 Point 类型

html - 如何避免右侧的滚动条与顶部导航栏( Bootstrap )重叠?

html - 无法通过单击选择文本来选择特定的单选按钮选项

javascript - 使用 Charts.Js 在条形图中加载 800 多个数据集时,Firefox 没有响应

c# - ASP.Net Core Serilog 如何在运行时读取日志文件

c# - 成为线猴

javascript - 如果容器中没有图像,则添加默认图像

c# - 错误消息 "A potentially dangerous Request.Form value"