Заменить (Environment.NewLine, "") не работает должным образом при отображении текста на веб-странице - PullRequest
4 голосов
/ 25 ноября 2011

Я не уверен, почему следующий код не работает должным образом:

litMessage.Text = messageBody.Replace(Environment.NewLine, "<br/>")

Где litMessage - имя литерального элемента управления, а messageBody - имя строковой переменной.

Мое намерение состоит в том, чтобы вывести строку на веб-страницу и заменить разрывы строк тегом br, чтобы он мог корректно отображаться на странице. Однако ничто не заменит. При просмотре исходного кода страницы похоже, что разрывы строк все еще существуют в строке. Аналогично, при отображении строки через MsgBox она также отображается нормально. Я также попытался обернуть вывод тегом pre, и он также правильно отображает разрывы строк.

Строка была первоначально введена пользователем с помощью asp: Textbox и сохранена в базе данных MSSQL. Он извлекается и отображается на другой веб-странице с помощью элемента управления asp: Literal. Единственное, что происходит со строкой перед ее отправкой, это то, что она обрезается (т.е. textbox.Text.Trim()).

Может быть, я что-то не учел?

Редактировать # 1: Из-за нехватки времени я решил просто обернуть текст тегом pre. Это приемлемое решение, поскольку оно сохраняет разрывы строк. К сожалению, это не объясняет, почему код не работал в первую очередь. А пока я просто оставлю вопрос без ответа, пока не найду правильный ответ.

Редактировать # 2: Решение найдено и дан ответ ниже. Тег UpdatePanel добавлен в вопрос для дальнейшего использования.

Ответы [ 12 ]

0 голосов
/ 22 апреля 2013

Чтобы поместить текст метки на следующую строку, мы можем использовать приведенное ниже решение.

<asp:Label ID="lblAppointmentLocation" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Location").ToString().Replace(Environment.NewLine, "<br/>").Replace("\n", "<br />") %>'></asp:Label>
0 голосов
/ 25 ноября 2011
var str = "Text sample to replace carriage return + newline ("
+ (char)13 + (char)10 
+ @") and
the Environment.NewLine and " 
+ Environment.NewLine
+ " and the unix \n new line character.";

str.Replace("\r\n","<br />")
       .Replace(Environment.NewLine, "<br />")
       .Replace("\n", "<br />");

Выход

Text sample to replace carriage return + newline (<br />) and<br />  the Environment.NewLine and <br /> and the unix <br /> new line character.
...