使用ASP.NET MVC在数据库中存储和读取HTML?

时间:2010-10-22 10:30:17

标签: html asp.net-mvc sql-server-2008

我想在评论框中允许HTML(最终使用tinymce或类似的东西),将其存储在MSSQL数据库中,然后将其读回到在tabl单元格中呈现字段的页面。

在我修复了action方法的验证问题之后,这一切都可以正常存储HTML。但是,当从数据库读回时,它会呈现带有HTML标记的文本,而不是格式化的HTML。即如果我查看表中的HTML源代码,就像这样:

        <td> 
            &lt;p&gt;Testing HTML&lt;/p&gt;&lt;p&gt;Hope it works&lt;/p&gt;
        </td> 

那么如何将其渲染为格式化文本?当我这样做以测试验证时,我只是在textarea中的标签中写道。

2 个答案:

答案 0 :(得分:2)

Professional ASP.NET MVC提供了有关“代码块”差异的解释:

  

当我们查看Details.aspx时   更接近模板,我们会发现   它也包含静态HTML   作为嵌入式渲染代码。 &lt; %%&gt;码   nuggets在View中执行代码   模板渲染,&lt;%:%&gt;码   nuggets执行包含的代码   在他们内部然后渲染结果   到模板的输出流。

本说明书中的左边是&lt;%=%&gt;中的代码块。作品。 Scott Guthrie在他的帖子New <%: %> Syntax for HTML Encoding Output in ASP.NET 4 (and ASP.NET MVC 2)中描述了不同之处。 Phil Haack在以Html Encoding Code Blocks With ASP.NET 4开头的HTML编码块系列中更详细地讨论了这一点。

您发现的是&lt;%=%&gt; &lt;%:%&gt;将原始HTML吐出到输出流中做HTML编码。

答案 1 :(得分:0)

您想要HtmlDecode

提供MSDN示例

HttpUtility.HtmlDecode方法

using System;
using System.Web;
using System.IO;

   class MyNewClass
   {
      public static void Main()
      {
         String myString;
         Console.WriteLine("Enter a string having '&' or '\"'  in it: ");
         myString=Console.ReadLine();
         String myEncodedString;
         // Encode the string.
         myEncodedString = HttpUtility.HtmlEncode(myString);
         Console.WriteLine("HTML Encoded string is "+myEncodedString);
         StringWriter myWriter = new StringWriter();
         // Decode the encoded string.
         HttpUtility.HtmlDecode(myEncodedString, myWriter);
         Console.Write("Decoded string of the above encoded string is "+
                        myWriter.ToString());
      }
   }