Показать новые строки из текстовой области в ASP.NET MVC

В настоящее время я создаю приложение с использованием ASP.NET MVC. У меня есть пользовательский ввод внутри текстовой области, и я хочу показать этот текст с ‹br /›s вместо новой строки. В PHP есть функция nl2br, которая делает именно это. Я искал в Интернете эквиваленты в ASP.NET/C#, но не нашел подходящего решения.

Первый из них (ничего не делает для меня, комментарии просто печатаются без новых строк):

<%
    string comment = Html.Encode(Model.Comment);
    comment.Replace("\r\n", "<br />\r\n");
%>
<%= comment %>

Второй, который я нашел, был следующим (Visual Studio сообщает мне, что VbCrLf недоступен в этом контексте - я попробовал его в представлениях и контроллерах):

<%
    string comment = Html.Encode(Model.Comment);
    comment.Replace(VbCrLf, "<br />");
%>
<%= comment %>

person maff    schedule 08.06.2009    source источник
comment
Вы уверены, что разрывы строк действительно \r\n, а не просто \n, \r или \n\r?   -  person Tomas Aschan    schedule 09.06.2009
comment
Насколько я знаю, в мире Windows разрывы строк - это \r\n;) - но я тоже пробовал только \n, не имело никакого значения.   -  person maff    schedule 09.06.2009


Ответы (6)


Попробуйте (сам не проверял):

comment = comment.Replace(System.Environment.NewLine, "<br />");

ОБНОВЛЕНО:

Только что проверил код - работает на моей машине

ОБНОВЛЕНО:

Другое решение:

System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringReader sr = new System.IO.StringReader(originalString);
string tmpS = null;
do {
    tmpS = sr.ReadLine();
    if (tmpS != null) {
        sb.Append(tmpS);
        sb.Append("<br />");
    }
} while (tmpS != null);
var convertedString = sb.ToString();
person eu-ge-ne    schedule 08.06.2009
comment
System.Environment.NewLine относится к среде сервера, не так ли? Будет ли это работать, если браузер клиента будет другой средой? - person CoderDennis; 09.06.2009
comment
У меня была такая же проблема. Первое решение исправило это для одной из моих текстовых областей. но мне нужно было использовать char (10) для одного из других. единственная разница заключалась в том, что один был отправлен ajaxly, а другой - нормально. просто подумал, что добавлю это, если у кого-то еще была такая же проблема! - person Patricia; 29.10.2009

для просмотра тегов html, таких как DisplayFor

вам нужно использовать другой метод, на самом деле доза mvc позволяла вам просматривать теги на странице

но вы можете использовать это, чтобы игнорировать эту опцию

@Html.Raw(model => model.text)

удачи

person Moh'd Jamal    schedule 10.06.2012

Пожалуйста, посмотрите этот ответ Заменить разрывы строк в строке C# здесь .

person nvtthang    schedule 06.06.2011

@Html.Raw(@Model.Comment.RestoreFormatting())

и тогда...

public static class StringHelper
{
    public static string RestoreFormatting(this string str)
    {
        return str.Replace("\n", "<br />").Replace("\r\n", "<br />");
    }
}
person Donskikh Andrei    schedule 23.06.2014

Если у вас есть представление на основе Razor, строка с разрывами строк и вы хотите показать этот текст с неповрежденными разрывами строк в своем представлении, вы можете сделать это, не заменяя все \r\n тегами html br. Вместо этого представьте текст в элементе, у которого для свойства стиля white-space установлено значение pre-line. Вы действительно должны добавить класс, например:

<span class="line-breaks">@Model.MyText</span>


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

Оригинал найден @

https://kaliko.com/blog/text-line-breaks-in-asp.net-mvc-razor-view/

person Mizanul Islam    schedule 25.10.2020

У меня та же проблема, и, прежде всего, ответ дал подсказку, а не совсем помог, поэтому дал ответ, чтобы помочь.

Замените \n strign на '
', '\r\n','\n', ничего не поможет, и, наконец, при замене \r\n все будет работать. (на дисплее это как \n, но в базе данных он хранится как \\n)

Старый код

 @Html.TextArea("MEPat_textPatNote", Model.MedicationPatCur, 4, 4, new { @class = "k-textbox", style = "width: 100%;", maxlength = "300" })

введите здесь описание изображения

Новый код

 @Html.TextArea("MEPat_textPatNote", Model.MedicationPatCur.PatNote== null? "": Model.MedicationPatCur.PatNote.Replace("\\n","\r\n"), 4, 4, new { @class = "k-textbox", style = "width: 100%;", maxlength = "300" })

введите здесь описание изображения

person Ajay2707    schedule 15.04.2021