使用ASP.NET MVC在数据库中存储和读取HTML?
我想允许在评论框中使用HTML(最终使用tinymce或类似的东西),将其存储在MSSQL数据库中,然后将其读回页面,其中字段呈现在tabl单元格中。使用ASP.NET MVC在数据库中存储和读取HTML?
在我修复了操作方法的验证问题后,这一切都可以正常工作。但是当从数据库中读回时,它会呈现HTML标签可见的文本,而不是格式化的HTML。即如果我看的HTML源代码中的表,它是这样的:
<td>
<p>Testing HTML</p><p>Hope it works</p>
</td>
那么,如何呈现为格式化的文本?当我这样做来验证验证时,我只是在textarea的标签中写下了。
Professional ASP.NET MVC提供有关 “代码掘金” 的差异这样的解释:
当我们看Details.aspx 模板更加紧密,我们会发现它包含了静态HTML以及 作为嵌入式呈现代码 。当查看 模板呈现<%%>代码 冰渣执行代码,并<%:%>代码 熔核执行的代码包含在其中 然后渲染结果 到模板的输出流。
在这个描述中忽略了<%=%>中的代码块是如何工作的。 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编码块的系列文章中更详细地讨论了这一点。
你发现的是,<%=%>将原始HTML文件输出到输出流中,而<%:%>执行HTML编码。
为了给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());
}
}
那么,我已经尝试过,但它没有奏效。但是也许我找到了答案:我用写出了视图中的文本。我猜想:即使我在控制器中使用了HtmlUtility.HtmlDecode,也会对其进行编码。所以如果我改为,它似乎工作。 – Anders 2010-10-22 10:44:00
感谢您的链接! – Anders 2010-10-23 20:28:27