【问题标题】:Displaying posted text with line breaks显示带有换行符的发布文本
【发布时间】:2011-03-12 10:06:51
【问题描述】:

在 aspx 页面上,我有 asp:textbox 多行,我在其中键入数据。 当我将 TextBox1.text 分配给字符串时,我得到如下信息:

"line1\r\nline2\r\nline3"

但如果我尝试将其设置回文字,我会得到:

line1 line2 line3

(不带线吠声)

如何解决?是用<br /> 替换\r\n 的唯一方法吗?

注意:如果我将输入存储在数据库(sqlserver)中,并在 sql management studio 中打开表 -> 编辑行 -> 我看到字符串 line1line2line3 (全部一起),但如果尝试将此内容复制到剪贴板(Ctrl+C) 只复制第 1 行!为什么?
另外,如果我将此数据绑定到中继器,并将 Eval("myfield") 绑定到中继器,我会得到线路制动!

【问题讨论】:

    标签: c# asp.net html sql-server


    【解决方案1】:

    这就是诀窍。你的输入是这样的:

    我有 asp:textbox 多行

    但是你的输出是这样的:

    我尝试将其设置回文字

    文字控件只呈现原始 html,原始 html 忽略换行符。多行文本框呈现为 html textarea 元素,文本区域的值遵循换行符。

    【讨论】:

      【解决方案2】:

      在 C# 中

      string htmlFormattetText = textStringFromDB.Replace("\r\n","<br />")
      

      或在 SQL 中

      SELECT REPLACE(TextCol,'\r\n','<br />' FROM MyTable
      

      【讨论】:

      • 但是为什么如果我将输入保存在数据库中然后检索它,它可以在没有任何替换的情况下工作?
      • 您能发布似乎有效的代码吗?在那种情况下,我不明白这个问题。我认为当您在 html 中输出 \r\n 时,您无法获得换行符,这是设计使然,html 仅查找
        换行符。你能澄清一下吗?
      • 我的意思是,如果我将文本框内容插入数据库,然后将其加载到 div 中,我会得到带有线刹车的文本
      • 您可以将用于加载文本的代码发布到 DIV 标记中吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多