2009-06-08 22 views
8

現在、ASP.NET MVCを使用してアプリケーションを作成しています。私はテキストエリア内にユーザー入力をいくつか持っていて、改行の代わりに< br/>でこのテキストを表示したいと思います。 PHPにはnl2brという関数がありますが、これはまさにこれです。私はASP.NET/C#で同等のWebを検索しましたが、私に適したソリューションは見つかりませんでした。ASP.NET MVCのテキスト領域から新しい行を表示

拳一つは、これは(私のために何もしない、コメントはちょうど新しいラインなしで印刷されている)されています。私はこの(Visual Studioのがわかった

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

秒1は私に語ったのvbCrLfは使用できません。この文脈で - 私は、ビューとコントローラでそれを試してみました):

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

...よりも改行は "\ rを\ n" は、だけではなく、 "\ n" は、 "\ rを" または "\ n個の\ rを" 実際にあるあなたは確かにいますか? –

+0

私が知る限り、Windowsの世界の改行は\ r \ n;)ですが、私はちょうど\ nでも試しましたが、何の違いもありませんでした。 – maff

答えて

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

パーフェクト、ありがとう:) – maff

+4

あなたのマシンで動作しますか? http://www.codinghorror.com/blog/archives/000818.html –

+0

System.Environment.NewLineはサーバーの環境を表します。いいえ?クライアントのブラウザが別の環境であった場合、これは機能しますか? – CoderDennis

3

あなたが別の方法を使用する必要がDisplayFor

ようなHTMLタグを表示するために、実際にはMVCはあなたがページ

にタグを表示することができdosentいますが、このオプション

を無視するためにこれを使用することができますHtml.Raw(@ Model.Comment.RestoreFormatting())@
@Html.Raw(model => model.text) 

幸運

0

public static class StringHelper 
{ 
    public static string RestoreFormatting(this string str) 
    { 
     return str.Replace("\n", "<br />").Replace("\r\n", "<br />"); 
    } 
} 
関連する問題