在ASP.NET MVC中显示文本区域中的新行

时间:2009-06-08 21:17:56

标签: c# asp.net-mvc string text

我目前正在使用ASP.NET MVC创建一个应用程序。我在textarea中得到了一些用户输入,我想用< 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 %>

6 个答案:

答案 0 :(得分:26)

尝试(不自己测试):

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();

答案 1 :(得分:3)

查看html标签,例如DisplayFor

你需要使用另一种方法,事实上mvc dosent允许你在页面

中查看标签

但您可以使用此选项忽略此选项

@Html.Raw(model => model.text)
祝你好运

答案 2 :(得分:0)

请在此处查看此答案Replace Line Breaks in a String C#

答案 3 :(得分:0)

@ 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 />");
    }
}

答案 4 :(得分:0)

如果您有一个基于Razor的视图,带有换行符的字符串,并且想要在视图中显示带有换行符的文本,则可以执行此操作,而无需将所有\ r \ n替换为“ html br” -tags 。而是将文本显示在样式属性为空白的元素中。您应该真正添加一个像这样的类:

<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/

答案 5 :(得分:0)

我有同样的问题,最重要的是给出了提示,而不是完全帮助,这就是为什么给出帮助的答案。

用'
'、'\r\n'、'\n'替换"\n",没有任何帮助,最后当替换"\r\n"时,它会起作用。 (显示为 \n,但在数据库中存储为 \\n

旧代码

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

enter image description here

新代码

 @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" })

enter image description here