我有一个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编辑器变得毫无意义。
答案 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>" %>