2009-06-08 40 views
8

我正在使用ASP.NET MVC创建一个应用程序。我在textarea中获得了一些用户输入,并且我想用< br/>而不是换行符来显示此文本。在PHP中有一个名为nl2br的函数,就是这样做的。我在ASP.NET/C#中搜索了Web上的等价物,但没有找到适用于我的解决方案。在ASP.NET MVC中显示文本区域的新行

拳头一个是这个(没有做我什么,评论只是印刷没有新线):

<% 
    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 %> 
+1

确定换行真的是 “\ r \ n”,而不仅仅是 “\ n”, “\ R” 或 “\ n \ r”? – 2009-06-08 21:21:12

+0

据我所知,在Windows世界中,换行符是\ r \ n;) - 但我也尝试过\ n,也没有任何区别。 – maff 2009-06-08 21:21:33

回答

25

尝试(未测试自己):

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

查看HTML标签就像一个DisplayFor

你需要使用另一种方法,实际上是MVC dosent允许你在页面

查看标签,但你可以用它来忽略此选项

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

好运

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