处理textarea输入以保留段落

时间:2010-07-14 12:36:33

标签: asp.net-mvc-2

我有一个MVC 2.0应用程序,它从textarea获取多行输入,然后在其他地方显示文本。我想至少保留段落。

目前我使用TextArea帮助器作为表单,然后在输出时使用Html.Encode该值。

// form view
<%: Html.TextAreaFor(model => model.Text, new { cols = 80, rows = 20 })%>

// display view
<div><%: Model.block.Text %></div

当然这还不够。输入

first line

second line

呈现为

<div>first line

second line</div>

显示为“第一行第二行”。不理想。

我知道我可以将p标签自己插入到文本中,甚至让用户输入它们。但是,在这种情况下,我必须为显示页面禁用HtmlEncode,这似乎有问题,对吧?真的没有比手动剥离文本中的所有标签更好的方法,然后调用HtmlEncode,然后添加p标签,然后禁用视图自动编码?

我听说在这个论坛上有人提到了TinyMCE等WYSIWYG编辑器的textarea输入。到目前为止,我没有看到这将如何解决问题。编辑器不会对输入进行可靠的卫生,但会再次要求我在显示页面上删除HtmlEncoding。再一次,我将面临从头开始编写复杂的消毒剂或者简单地删除包括a和图像在内的所有标签,直到花哨的WYSIWYG编辑器变得毫无意义。

2 个答案:

答案 0 :(得分:0)

您是否可以使用以下内容替换所有包含中断元素\n的换行符<br />

string output = Model.block.Text.Replace ("\n", "<br />");

答案 1 :(得分:0)

您可以对文字进行HTML编码,然后应用<p>代码

<%= "<p>" + Html.Encode(Model.block.text).Replace("\n", "</p><p>") + "</p>" %>