呈现 HTML 作为 nvarchar 存储在数据库中

Rendering HTML stored in database as nvarchar

几天来我一直在努力解决这个问题。我能够更新我的应用程序以允许用户(我)将 HTML 代码输入文本字段并将该信息更新到数据库。但是,问题是,当我随后尝试显示该信息时,HTML 未呈现,而是显示为原始 HTML.

我已经在这个网站上搜索过这个问题的答案,但一直找不到。

我需要渲染 HTML 以便我的 CSS 和 JavaScript 可以执行它们的操作并格式化元素。

如果有人能为我指出正确的方向,那就太好了,因为我不可能直接将 HTML 硬编码到视图中。

例如 <span id="{1c}}></span> javascript/css 将填空。但是,HTML 的显示与它显示的一样,而不是空白 space。同样,这只是一个示例。

添加代码:

来自Card.cs

    [AllowHtml]
    [DataType(DataType.MultilineText)]
    public string CardText { get; set; }

数据输入到文本字段并保存到数据库。

    <span id="{t}">Tap</span>Prodigal Sorcerer Deals 1 damage to target creature or player.

通话可见:

    @Model.CardText

页面显示:

    <span id={t}">Tap</span>Prodigal sorcerer Deals 1 damage to target creature or player.

检查页面源显示:

    <p>&lt;span id=&quot;{t}&quot;&gt;Tap&lt;/span&gt;Prodigal Sorcerer Deals 1 damage to target creature or player.</p>

我已尝试使用以下内容更新视图,但收到的响应相同

    @Html.Raw("@Model.CardText")

也没有引号

    @Html.Raw(@Model.CardText)

两者 return 都存储在数据库中,但 html 作为字符串数据而不呈现 html。

你应该使用:

<span id="{1c}}>@Html.Raw(YourString)</span>

不确定您是如何尝试渲染的,如果它是直接剃须刀那么它应该可以在不做任何事情的情况下工作。如果它通过 javascript/jquery 应该这样做。

$("#somediv").html('<span id="{1c}}"></span>');

不过,显示一些示例代码会很好。

使用这个:

@Html.Raw(Model.CardText)

可以这样想:在 MVC 中,@ 符号会自动编码你放在它后面的内容,除非你先 'wrap' 使用 Html.Raw。