2011-03-24 66 views
0

我有一个文本框使用多行模式,当我创建存储过程参数更新我使用Server.HtmlEncode上的文本框值。我可以将数据记录中的内容复制到记事本中,并显示用户按下新键的Enter键的空格。保持格式输入在asp.net文本框(回车,新行等)

在页面上显示该内容(不是用于编辑的文本框;只是将内容分配给文字控件)时,它将所有文本一起运行。

我已经做了一些关于使用Replace和不同的转义序列或Environment.NewLine的搜索。我仍然对如何在用户输入文本时感到困惑。

+0

问题是HTML将换行看作“只是空白”,并且大多忽略它。在“查看源代码”中,您仍然会看到这些换行符。同样需要额外的“格式化空间”。因此,您需要用html-linebreak替换换行符,请参阅AndyM的答案。 – 2011-03-24 15:19:24

回答

3

假设你正在使用C#,你可以做以下的时候,你当你在你从一个文本框抢值调用Server.HtmlEncode它会看起来在文本显示的页面

theStringYouWantToFormat.Replace(char.ConvertFromUtf32(13),"<br/>") 

在弦上并编码该文本框中包含的任何HTML标记,例如<script></script>将被编码为&lt;script&gt;&lt;/script&gt;

+0

谢谢你的回应。为了澄清,当内容更新时,我应该这样做,因此在向访问者显示内容时不需要任何格式化? – James 2011-03-24 15:23:12

+0

您可以在保存内容或显示内容时执行此操作。就我个人而言,我不喜欢在数据库中使用HTML标签,除非我必须这样做,但有充足的理由这么做。需要记住的一点是,如果数据将被用于Web页面,例如合并到Word文档中,那么数据中的HTML标签将被删除,并且当您编辑信息时将需要做与我在上面发布的内容相反的内容,所以它是另外六个半。 – AndyM 2011-03-24 15:27:53

+0

Andy:关于以网页以外的格式显示内容,请记住这一点。谢天谢地,我没有这个具体项目的“问题”:) – James 2011-03-24 15:29:54