.Replace (Environment.NewLine, "") работает на localhost, но не когда я загружаю свой сайт на хост - PullRequest
17 голосов
/ 10 ноября 2011

Понятия не имею, почему это так.Вот мой код, и он отлично работает, когда я пробую его на localhost, но когда я загружаю свой сайт, у моего текста нет <br />.Почему это могло произойти?И как я могу исправить эту проблему с новыми линиями?(white-space: pre-line; не является для меня решением, оно не работает на IE6 и мешает моим стилям)

@Html.Raw(Html.Encode(Model.Body)
.Replace(Environment.NewLine, "<br />"))<br />

Ответы [ 4 ]

35 голосов
/ 12 ноября 2013

Я считаю, что этот ответ лучше: https://stackoverflow.com/a/8196219/550975

string result = Regex.Replace(input, @"\r\n?|\n", "<br />");
8 голосов
/ 10 ноября 2011

Как уже упоминалось в комментариях BuildStarted, браузеры могут отправлять \r\n или \n, что приведет к сбою, если вы используете Environment.NewLine - и я не думаю, что asp.net исправит это до запуска вашего код.

Я бы посоветовал вам использовать вместо регулярных выражений регулярное выражение: "\\r?\\n" Это должно соответствовать обоим случаям (я не ожидаю, что какой-либо браузер фактически использует только '\ r').

3 голосов
/ 08 апреля 2016

Многое произошло с IE6 (слава богу!) , поэтому я просто хотел бы упомянуть решение проблемы с CSS.

В вашем C #:

ViewBag.StringText = "some text" + Environment.NewLine + "more text in a new line";

В вашем CSS:

.newlines { 
  white-space:pre-line; 
}

В твоей бритве:

<div class="newlines">@ViewBag.StringText</div>
1 голос
/ 10 ноября 2011

Вместо использования Environment.NewLine, попробуйте это:

someString.Replace(@"\r\n", "<br/>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...