【问题标题】:keep formatting entered in asp.net textbox (carriage return, new line, etc)保持在 asp.net 文本框中输入的格式(回车、换行等)
【发布时间】:2011-07-22 05:12:34
【问题描述】:

我有一个使用多行模式的文本框,当我创建用于更新的存储过程参数时,我在文本框值上使用Server.HtmlEncode。我可以将数据记录中的内容复制到记事本中,它会显示用户为新段落按下 Enter 键的空间。

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

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

【问题讨论】:

  • 问题在于 HTML 将换行符视为“只是空格”并且大多忽略它。在“查看源代码”中,您仍然会看到这些换行符。额外的“格式化空间”同上。因此,您需要用 html-linebreak 替换换行符,请参阅 AndyM 的答案。

标签: asp.net textbox text-formatting


【解决方案1】:

假设您使用的是 C#,当您在页面上显示字符串时可以执行以下操作

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

当您对从文本框中获取的值调用 Server.HtmlEncode 时,它会查看文本并对该文本框中包含的任何 HTML 标记进行编码,例如,&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt; 将被编码为 &amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;

【讨论】:

  • 感谢您的回复。澄清一下,我是否应该在内容更新时这样做,从而在向访问者显示内容时不需要任何格式?
  • 您可以在内容保存或显示时执行此操作。就个人而言,除非我必须这样做,否则我不太喜欢在我的数据库中包含 HTML 标记,但有很多理由这样做。要记住的一点是,如果数据要与网页一起使用,例如合并到 word 文档中,那么数据中的 HTML 标记将需要删除,当您开始编辑信息时,您将需要做我上面发布的相反的事情,所以它是另一个六个半打。
  • Andy:以网页以外的其他格式显示内容时,请牢记这一点。谢天谢地,我对这个特定项目没有那个“问题”:)
  • 嗨,詹姆斯,刚刚更新了我的评论。如果在将内容设置回文本框以进行更新时确实将 HTML 存储在数据库中,则需要执行与我上面发布的在前端显示相反的操作,因此它将是 myTextBox.Text = theStringYouWantToFormat.Replace ("
    ",char.ConvertFromUtf32(13)).
  • 安迪,感谢您提供这些信息。我们注意到这种情况正在发生。为了清楚起见,处理这些问题的最佳方法是什么:1)获取文本输入以存储在数据库中,2)在访问者看到的页面上显示和 3)文本如何显示在编辑内容文本框中?我希望编辑器在文本框字段中看不到任何 html 标签或代码。谢谢。詹姆斯
猜你喜欢
  • 2014-12-22
  • 1970-01-01
  • 2015-02-17
  • 2016-06-15
  • 1970-01-01
  • 2011-10-04
  • 2015-06-08
  • 2011-10-21
  • 2010-09-07
相关资源
最近更新 更多