TextBox 或 Html 区域中的换行符
Posted
技术标签:
【中文标题】TextBox 或 Html 区域中的换行符【英文标题】:Line Break in TextBox or Html Area 【发布时间】:2010-09-22 17:58:58 【问题描述】:在插入数据库(Asp.Net)时,在多行文本框或 html 文本区域中分隔换行符和空格的方法是什么。例如如果我想插入应该怎么做
你好
世界
到带有换行符的数据库?还有同时显示我应该做什么?我不想为此使用编辑器。
但问题是如何分隔换行符和空格。现在当我插入
你好
世界
或hello world,它以相同的字符保存在数据库中。因此,我无法将它们分开,尽管用户使用了上述换行符,但我正在展示你好世界。该值来自TextBox或html区域,与换行或空格相同。
【问题讨论】:
【参考方案1】:换行符应该持续到数据库。当您检索信息并显示为 Html 时,只需将换行符(即 Environment.NewLine)替换为换行符标记(即 < b r / >
)
【讨论】:
别忘了先 Html.Encode(),如果是用户提交的内容,再做 Replace()。 你应该总是使用HtmlEncode(),不管内容是否是用户输入的。只需要一个不小心插入<
或'
就可以真正搞砸了。【参考方案2】:
< br />
对我不起作用。 (同时将文本分配给 html textarea)
\r\n
做了。
【讨论】:
【参考方案3】:使用 Razor (MVC3) 来显示或保留从我的数据库中提取的换行符,以下工作:
@Html.Raw(text_to_display.Replace(Environment.NewLine, "<br/>"))
【讨论】:
【参考方案4】:几个选择:
• 将换行符转换为<br/>
。
• 将您的文字放在<pre>
块中。
• 将每一行放在自己的<div>
块中。
请记住,所有空格(SP、HT、LF、CR)在 HTML 中都会被忽略(大部分时间)。
您存储在数据库中的应该是纯字符文本。将其转换为适当的 HTML 以供显示需要用 HTML 序列替换某些字符。
【讨论】:
【参考方案5】:你可以使用
【讨论】:
不,你不能。空格在 HTML 中(大部分)被忽略。他需要使用实际的格式化换行符,即&lt;br/&gt;
。
你是对的。我以为他是在问关于在 textarea 中添加换行符的问题。【参考方案6】:
当试图为 asp.net 页面上的 textarea 控件保留格式化的回车符/换行符时,从后面的代码中获取它的值时,您应该使用:
textarea.Value = Server.HtmlDecode(myValue.Replace("\r\n", " "));
这将从:
some blah blah\r\nblah blah
到:
some blah blah
blah blah
因此,当您使用 javascript 读取换行符时,您可以使用:
textarea.value.indexOf("\n");
【讨论】:
【参考方案7】:我总是按提供的方式存储用户输入,但是当再次显示它时,您必须始终非常小心。换行符只是用“”替换 System.Environment.Newline 的一种情况。不确定在呈现为 html 时保留其他空白的最佳做法是什么,听听其他人的做法会很有趣。
【讨论】:
【参考方案8】:在呈现为 HTML 后保留空白最容易通过将其转换为 HTML 实体 &nbsp;
来完成。
【讨论】:
【参考方案9】:您需要将所有的 vbcrlf (environment.newline) 实例替换为 html 标签 []
并且要允许多个空格,您需要将空格替换为 [& n b s p ;]
这会将您的普通测试转换为“足够”以被视为 html 的 html(适用于我网站的输入文本部分)
从我的标签中,它只是 [] 之间的文本并删除空格...将标签文本放入页面导致它显示为 html !!!!
【讨论】:
【参考方案10】:上面唯一对我有用的建议是:<& # 1 0 ;>
我正在使用现在在 Linux 服务器上运行的 Front Page 生成的文本框。
字符串的多次使用不会创建多个换行符,但是在新行上的字符串的单个条目提供了适合新段落的双换行符。
在使用 Windows 操作系统从服务器移动我的页面之前,我能够通过双“Enters”完成换行。
【讨论】:
以上是关于TextBox 或 Html 区域中的换行符的主要内容,如果未能解决你的问题,请参考以下文章