我目前正在使用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 %>
答案 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" })
新代码
@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" })