我从一开始就为ASP.NET编写代码,今天我遇到了一些我以前从未见过的东西。通常情况下,我通过期待“\ r \ n”来查找C#中的换行符(例如,当从textarea发布在ASP.NET中时)。现在我正在使用MVC框架,来自textarea的线路文本只有“\ n”用于换行符。
旧学校TextBox控件中是否有某些内容可以规范换行符?由于MVC只是按原样使用表单数据,这是正常的吗?很想得到一些见解。
答案 0 :(得分:6)
我观察到实际的换行顺序因浏览器而异。
如果您在页面上有多行textarea并且页面已提交,则:
IE返回“\ r \ n”以表示换行符。在这种情况下,FF返回“\ n”。
我在2006年底的某个地方进行了测试,所以现在可能会有所不同。
我不相信它可能与WebForms与MVC有任何关系。两者都只是处理提交的输入并按原样返回给你。
如果您希望以某种方式处理和替换这些字符,那么按照从长短的顺序进行处理是有意义的:
string userText = form["Text"];
userText = userText.Replace ("\r\n", "<br/>").Replace ("\r", "<br/>");
答案 1 :(得分:4)
\ n是* nix风格系统上的行结尾变体。 \ r \ n是特定于Windows的行结束行为。
如果您正在检查行结尾并将您的界面暴露给非Windows环境,请务必不仅要检查\ r \ n,还要检查\ n是否单独使用。
更多背景信息,请查看维基百科上的Newline文章。
答案 2 :(得分:1)
我正在使用Environment.NewLine:
string userText = form["Text"];
userText = userText.Replace (Environment.NewLine, "<br />")
另请查看@Haacked关于某些newline textarea quirks的帖子。