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

В настоящее время я создаю приложение с использованием ASP.NET MVC. Я получил некоторый пользовательский ввод внутри текстовой области, и я хочу показать этот текст с символами <br /> вместо новых строк. В 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 %>
 Tomas Aschan08 июн. 2009 г., 23:21
Вы уверены, что разрывы строк действительно "\ r \ n", а не просто "\ n", "\ r" или "\ n \ r"?
 maff08 июн. 2009 г., 23:21
Насколько я знаю, в мире Windows разрывы строк - это \ r \ n;) - но я пробовал только с \ n, без разницы.

Ответы на вопрос(4)

@ Html..Comment.RestoreFormatting ())

и тогда...

public static class StringHelper
{
    public static string RestoreFormatting(this string str)
    {
        return str.Replace("\n", "<br />").Replace("\r\n", "<br />");
    }
}
Решение Вопроса

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();
 Tomas Aschan08 июн. 2009 г., 23:43
Это работает на вашей машине?codinghorror.com/blog/archives/000818.html
 Nick Masao29 янв. 2010 г., 15:10
Второе решение работает лучше. Спасибо
 CoderDennis09 июн. 2009 г., 00:34
System.Environment.NewLine относится к среде сервера, нет? Будет ли это работать, если браузер клиента был другой средой?
 Patricia28 окт. 2009 г., 22:13
У меня была такая же проблема. Первое решение исправило это для одной из моих текстовых областей. но мне нужно было использовать символ (10) для одного из других. единственное отличие заключалось в том, что один был представлен без особого труда, а другой - нормально. просто подумал, что я добавлю этот случай, если бы у кого-то была такая же проблема

DisplayFor

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

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

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

удачи

Ваш ответ на вопрос