.Replace(Environment.NewLine, "<br/" >") работает на localhost, но не тогда, когда я загружаю свой веб-сайт на хостинг

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

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

Ответы

Ответ 1

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

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

Ответ 2

Я считаю, что этот ответ лучше всего: fooobar.com/questions/16706/...

string result = Regex.Replace(input, @"\r\n?|\n", "<br />");

Ответ 3

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

В вашем С#:

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

В вашем CSS:

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

В вашей бритве:

<div class="newlines">@ViewBag.StringText</div>

Ответ 4

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

someString.Replace(@"\r\n", "<br/>");