Что с вариациями разрыва строки в C # и ASP.NET? (\ r \ n против \ n) - PullRequest
1 голос
/ 31 мая 2009

Я писал код для ASP.NET с самого начала, и сегодня я столкнулся с чем-то, чего я никогда раньше не видел. Обычно я искал разрывы строк в C # (например, при публикации в ASP.NET из текстовой области), ожидая "\ r \ n". Теперь я использую MVC-фреймворк, и текст, приходящий по проводам из текстовой области, просто имеет «\ n» для разрывов строк.

Что-то происходит в элементах управления TextBox старой школы, которые нормализуют разрывы строк? Поскольку MVC просто использует данные формы как есть, это нормально? Хотелось бы получить некоторое представление.

Ответы [ 3 ]

6 голосов
/ 31 мая 2009

Я заметил, что фактическая последовательность разрывов строк отличается от браузера к браузеру.

Если у вас есть многострочное текстовое поле на странице, и страница отправляется, то:

IE возвращает "\ r \ n", чтобы указать новые строки. FF возвращает «\ n» в этом случае.

Я тестировал его где-то в конце 2006 года, так что теперь он может быть другим.

Я не верю, что это может иметь какое-либо отношение к WebForms и MVC. Оба просто обрабатывают отправленные данные и возвращают их вам как есть.

Если вы хотите как-то обработать и заменить эти символы, имеет смысл делать это в длинном-коротком порядке:

string userText = form["Text"];
userText = userText.Replace ("\r\n", "<br/>").Replace ("\r", "<br/>");
4 голосов
/ 31 мая 2009

\ n - это вариант окончания строки в * nix-стиле. \ r \ n - специфичное для Windows поведение конца строки.

Если вы проверяете окончания строк и открываете свой интерфейс для сред, отличных от Windows, обязательно проверьте не только \ r \ n, но и только \ n.

Для получения дополнительной информации ознакомьтесь со статьей Newline в Википедии.

1 голос
/ 04 августа 2009

Я использую Environment.NewLine :

string userText = form["Text"];
userText = userText.Replace (Environment.NewLine, "<br />")

Также взгляните на сообщение @ Haacked о некоторых новых текстовых причудах .

...