当我在asp.net mvc应用程序中将注释保存到数据库时,如何保持注释的格式?

时间:2010-03-16 16:02:40

标签: c# asp.net asp.net-mvc

标题可能不太清楚。考虑一下这个scnerio:你有一个博客网站,或者只是一个用户可以通过评论回复的网站。您希望维护注释的格式。因此段落应该是分开的,第一句缩进,允许关键字加粗等等。如何做到这一点?

这就是各种博客网站的处理方式,包括这个网站。我最初的猜测是,注释以xml格式或原始html保存到该数据库。这些都是我唯一的猜测。我认为魔术字符串也可用于表示各种格式的开始和结束,但魔术字符串通常不受欢迎。

我在asp.net mvc应用程序中这样做。我正在使用mvc的第1版,但如果能在这里找到一个简单的解决方案,我愿意转移到2。

6 个答案:

答案 0 :(得分:1)

简短回答:查看Markdown

更长的答案:文本的格式在提交到数据库时会保留,但在网页中显示时将无法正确显示,除非将回车(CR)和换行符(LF)等文本格式元素转换为HTML。

答案 1 :(得分:0)

这实际上是特定于实现的,但很可能是存储原始html或使用魔术字符串。

魔术字符串并不是真的不受欢迎,特别是在某些情况下(例如使用BBCode的phpBB等讨论板),您可以保护查看信息的用户,防止他们攻击您的数据库或网站。< / p>

答案 2 :(得分:0)

你的方法对我来说是可行的。但是,我想指出,在将任何HTML代码保存到数据库之前,需要对其进行清理。

你需要一些真正偏执的代码来消除一些不法分子坚持试图发布的令人讨厌的东西......

一种方法可能是将合法的HTML标记转换为标记(如另一个答案所示),并将其余部分无情地删除!

答案 3 :(得分:0)

这就是我的所作所为。

我使用Jeff's Sanatize Code(在ASP.NET MVC中作为Html.Helper)。代码将在用户编写时保存到数据库中,但它会在屏幕上显示并进行清理。

答案 4 :(得分:0)

如果您想使用我们正在使用的此文本编辑器,请转到http://wmd-editor.com/。将其配置为输出Markdown并保存到数据库。

如果你需要更多电量,你可以使用FCKEditor,CKEditor(新的FCKEditor),http://ckeditor.com/,它非常容易设置,他们会在你的页面上放一个漂亮的javascript WYSIWYG编辑器,你将HTML保存到你的数据库

一个缺点是,您需要使用跨站点脚本等javascript攻击来处理恶意用户。在将用户输入保存到数据库之前,应该对其进行清理。

Microsoft发布了http://antixss.codeplex.com/ AntiXSS,可以帮助消除用户输入。

答案 5 :(得分:0)

这将允许View保持数据库中的换行符:

@Html.Raw(item.YourField.Replace(Environment.NewLine, "< br/ >"))

或者您可以使用

 

< pre > @Html.DisplayFor(model => model.YourField) < / pre >