我想渲染我从数据库中读取的html并显示结果,而不是实际的html

时间:2012-11-13 15:34:26

标签: html asp.net-mvc asp.net-mvc-3 ckeditor

我在内联网上使用了一个ckeditor。 我用它来保存格式化的文本,例如链接。

问题是,我在ckeditor源中的内容是

<p>
this is the new <a href="http://www.google.com">test</a> we need to run.</p>

我在编辑器中看到的是

test(as a link)

在DB中保存的内容是

 &lt;p&gt;
    this is the new &lt;a href="http://www.google.com"&gt;test&lt;/a&gt; we need to run.&lt;/p&gt;

这是正确的。

但是当我想在ckeditor上编辑它时,我看到的是

<p> <a href="http://www.google.com">test</a></p>

以及我所看到的来源是

&lt;p&gt;
        &lt;a href="http://www.google.com"&gt;test&lt;/a&gt;&lt;/p&gt;

我希望在编辑时看到完全相同的内容。

Anoter的事情是,我正在使用Html.Raw在我的索引中显示它,但它显示了html。我想看看渲染的html。

所以,如果我保存

<p>
    this is the new <a href="http://www.google.com">test</a> we need to run.</p>

我想看看

this is the new test(as link) we need to run

而不是

<p>
        this is the new <a href="http://www.google.com">test</a> we need to run.</p>

任何想法? 瑞·马丁斯

2 个答案:

答案 0 :(得分:0)

你的问题是不了解htmlentities。

编码HTML

http://php.net/manual/en/function.htmlentities.php

解码HTML

http://www.php.net/manual/en/function.html-entity-decode.php

示例用法

<?php

   $orig = "I'll \"walk\" the <b>dog</b> now";

   $a = htmlentities($orig);
   $b = html_entity_decode($a);

   echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now
   echo $b; // I'll "walk" the <b>dog</b> now

?>

编辑(添加了asp.net等价物)

Server.HtmlEncode("<your string>");

Server.HtmlDecode("&lt;your string&gt;");

答案 1 :(得分:0)

试试这段代码:

<%: Html.Raw(HttpUtility.HtmlDecode(YourHTMLStringHere)) %>

它只会呈现HTML代码