【问题标题】:How to preserve enter and tabs in multiline textbox in asp.net如何在asp.net的多行文本框中保留回车和制表符
【发布时间】:2010-12-10 09:25:21
【问题描述】:

我的 asp.net 页面中有多行文本框。当用户输入一些数据时,我将数据存储在数据库表中。现在,当我将数据显示回页面时,用户在输入数据时按下的 ENTER 会丢失,并且所有数据都显示在同一行中。所以我想保存输入数据时按下的 ENTER,并以输入的形式显示数据。请帮助

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    HTML collapses whitespace:换行符确实存储在数据库中,但在页面上呈现为空格字符。

    渲染时可以用<br />元素替换换行符:

    yourLabel.Text = Server.HtmlEncode(yourData).Replace("\n", "<br />");
    

    不过,除了在多行只读TextBox 控件中呈现数据之外,没有简单的解决方案可以恢复制表符。

    【讨论】:

    • 这对我有用,同时从 c# 发送 html 电子邮件
    • 在互联网上的众多答案中,这绝对对我有用。谢谢老兄。
    【解决方案2】:

    显示数据时将输入字符char(13)替换为html换行符

    lblDisplay.Text = GetTextFromDb().Replace(char(13),"<br/>");
    

    【讨论】:

      【解决方案3】:

      通常,当用户在多行文本框或文本区域中按下 tab 键时,焦点将跳转到下一个 html 页面元素,因此用户将无法在其输入中添加选项卡。但是,如果用户从 Word 中复制并粘贴其文本,则该选项卡将被保留并保存到 SQL 数据库中。如果是这种情况,您可以简单地打开一个空白 Word 文档,输入一个选项卡,突出显示该选项卡,然后将其复制并粘贴到替换语句中,将其替换为 &amp;nbsp 或左边距设置为 @ 的 css span 987654322@。当您以读取模式显示条目时,它应该会正确呈现。以下代码替换了呈现条目中的制表符和换行符。

      objLabel = FindControl(strQuestionId)
      strReformattedText = reader("Answer").Replace(System.Environment.NewLine, "<br />")
      strReformattedText = strReformattedText.Replace("   ", "&nbsp;&nbsp;&nbsp;&nbsp;") 'Replace tab character with &nbsp;
      objLabel.Text = strReformattedText
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        • 1970-01-01
        • 2012-11-18
        • 2011-07-22
        • 2019-11-20
        相关资源
        最近更新 更多