我的asp.net页面中有多行文本框。当用户输入一些数据时,我将数据存储在数据库表中。现在,当我将数据显示回页面时,用户在输入数据时按下的ENTER将丢失并且所有数据都显示在同一行中。所以我想在输入数据时保存按下的ENTER,并以输入的形式显示数据.plz help
答案 0 :(得分:5)
HTML collapses whitespace:换行符确实存储在数据库中,但在页面上呈现为空格字符。
渲染时,您可以使用<br />
元素替换换行符:
yourLabel.Text = Server.HtmlEncode(yourData).Replace("\n", "<br />");
除了在多行只读TextBox
控件中呈现数据之外,没有简单的方法可以恢复制表符。
答案 1 :(得分:0)
将输入字符char(13)替换为html break line&lt; br /&gt;在显示数据时。
lblDisplay.Text = GetTextFromDb().Replace(char(13),"<br/>");
答案 2 :(得分:0)
通常,当用户按下多行文本框或textarea中的Tab键时,焦点将跳转到下一个html页面元素,因此用户将无法在其输入中添加选项卡。但是,如果用户从Word复制并粘贴其文本,则该选项卡将保留并保存到SQL数据库中。如果是这种情况,您只需打开一个空白的Word文档,输入一个选项卡,突出显示该选项卡,然后将其复制并粘贴到替换语句中,将其替换为 
或使用左边距设置的CSS跨度到20px
。然后,当您以读取模式显示条目时,它应该正确呈现。以下代码替换了渲染条目中的制表符和换行符。
objLabel = FindControl(strQuestionId)
strReformattedText = reader("Answer").Replace(System.Environment.NewLine, "<br />")
strReformattedText = strReformattedText.Replace(" ", " ") 'Replace tab character with
objLabel.Text = strReformattedText