C#ASP.net呈现HTML字符串

Ren*_*ndy 2 html c# asp.net rendering

我的标记中有一些代码如下:

<% Response.Write(((String)objRow["Post"]).Trim()); %>
Run Code Online (Sandbox Code Playgroud)

objRow ["Post"]中的值是HTML标记 - 类似于:

<p><span style="color: #ff0000;">asdsada</span></p>
Run Code Online (Sandbox Code Playgroud)

其内容使用tinymce创建.我现在想要渲染生成的html - 基本上是先前创建的保存函数的视图函数.

目前,我的标记字面上将你在那里看到的HTML吐出到我的网站上 - 但我真正想要的是一条红色的文字说asdsada.

请帮忙

Zdr*_*nev 7

听起来你试图显示的值已经是html编码的.试试这个:

<%= HttpUtility.HtmlDecode((string)objRow["Post"]) %>
Run Code Online (Sandbox Code Playgroud)


Joh*_*rog 6

我的 Asp.net 版本稍高一些,但这可能会对使用 .net Core 2.0 MVC 的人有所帮助。

我使用以下方法在我的Asp.Net Core 2.0 MVC项目中渲染 html(html 是通过Tiny MCE创建并保存在数据库中,然后在 Razor 视图上渲染)。

请尝试以下两个步骤

1)在_ViewImports.cshtml中包含System.Net

@using System.Net
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Run Code Online (Sandbox Code Playgroud)

2)在View.cshtml中使用HtmlDecode渲染 html :

@Html.Raw(@WebUtility.HtmlDecode(Model.MyHtmlData))
Run Code Online (Sandbox Code Playgroud)

这对我有用,希望有帮助!

但是如果没有HtmlDecodeHtml.Raw将显示带有 html 标签的MyHtmlData(不渲染 html,只是显示它)。我想,这是因为数据已经是 HTML 编码的,正如 Zdravko Danev 提到的:

@Html.Raw(Model.MyHtmlData)
Run Code Online (Sandbox Code Playgroud)