【问题标题】:Keep linebreaks when getting text from <textarea>从 <textarea> 获取文本时保留换行符
【发布时间】:2015-05-18 14:54:04
【问题描述】:

我正在使用 C# 和 HTML 的 Visual Web Developer 构建一个站点。

我有一个页面,用户可以在其中在 textarea 标签中写下关于我的网站的反馈,然后提交(在 textarea 中,他们可以在任何地方进行换行)。

问题是当我取回他们写的文本时,它显示没有换行符,例如:

如果用户写了:

"Hello, my name is
Omer N."    

当我取回它时,它看起来像这样:“你好,我的名字是 Omer N。”。

我该如何解决这个问题?

【问题讨论】:

  • 您确定从浏览器获取换行符时它已经消失了,还是当您稍后在浏览器中显示文本时,换行符没有出现?跨度>
  • 我将文本输入到字符串中,然后在

    中使用 将其呈现在

    中。

标签: html textarea visual-web-developer


【解决方案1】:

取决于您如何存储这些值。请记住,来自遵循空格规则的字段的 HTML 和一般输入,它会将空格截断/压缩为单个实体。

So "Wide      String" = "Wide String" and:

"Multi-line
string
here" will be truncated to "Multi-line string here" as you have experienced.

这是默认行为。

所以为了保持你的换行符、间距等。你需要escape itencodingdecoding的过程,然后再存储它。

说明here:

许多 Web 开发新手无法理解为什么 他们在从文本区域或从文本区域输入的数据中进行回车 网页呈现时不会出现文本文件、Excel 电子表格等。

一旦新手意识到网络 page 只是浏览器对 html 标记的解释, html 中的新行由
标签表示。所以需要什么 是一种用
标签交换回车或换行的方法。 好吧,实际上是一种替换()它们的方法。

<%# Eval("MyMultiLineValue").ToString().Replace(<linebreak>,"<br />") %>

string.Replace() 方法允许这样做,但我们还需要识别 我们想要用 html 标签替换的东西。新线怎么样 用 C# 或 VB.Net 表示?

在 C# 中,它是 "\r\n",而在 VB.Net 中,它是 vbcrlf。然而,有 也是一个独立于语言的选项,它做同样的事情: Environment.NewLine。

<%# Eval("MyMultiLineValue").ToString().Replace(Environment.NewLine,"<br />") %>

希望这会有所帮助! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2017-05-17
    • 2015-08-16
    相关资源
    最近更新 更多