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

时间:2016-11-19 04:33:17

标签: c# asp.net-mvc-4 razor localdb

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

我在这个网站上搜索过这个问题的答案,但一直无法解决。

我需要渲染HTML,以便我的CSS和JavaScript可以完成他们的工作并格式化元素。

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

示例将是<span id="{1c}}></span> javascript / css将填空。但是,HTML显示的方式与显示的不同,而不是空格。再次,这只是一个例子。

添加代码:

来自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)

两者都返回存储在数据库中的内容,但是将html作为字符串数据而不是呈现为html。

3 个答案:

答案 0 :(得分:0)

您应该使用:

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

答案 1 :(得分:0)

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

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

尽管如此,展示一些示例代码还不错。

答案 2 :(得分:0)

使用此:

@Html.Raw(Model.CardText)

可以这样想:在MVC中,@符号会自动编码你所添加的内容,除非你首先使用Html.Raw将它包起来。