2017-05-31 13 views
-1

私の問題の解決策を探していますが、近いものは見ていません。c#viewModelのstringプロパティの文字列連結MVCに表示されるlinqを使用したリストオブジェクト

私はオブジェクトがあります。私が何をしようとしています何

public class MyTestObject() 
{ 
    public int Id {get;set;} 
    public string Description {get;set;} 
    public IList<Event> Events {get;set; 
} 

public class Event() 
{ 
    public int Id {get;set;} 
    public int Type {get;set;} 
    public string EventName {get;set;} 
} 

は改行で分離された単一の文字列にイベントクラスからEVENTNAMEのプロパティを連結しています。

string test = string.Join(Environment.NewLine, MyTestObject.Events.Where(x => 
x.Type == 99).Select(x => x.Reference)); 

これは連結文字列を生成しますが、改行は認識されません。文字列は、MVCページのdivに表示されます。

Environment.Newlineを<br/>に置き換えました。これは、結合された文字列の間にテキスト文字列<br/>を追加するだけです。

text1<br />text2 

次は私が試した:私を与えた

string test = string.Join("", MyTestObject.Events.Where(x => 
x.Type == 99).Select(x => x.Reference + " Boo")); 

text1Bootext2Boo 

だからロジックが勝って、私は

string test = string.Join("", MyTestObject.Events.Where(x => 
x.Type == 99).Select(x => x.Reference + Environment.NewLine)); 
012を試してみました

その後、新しい行が追加されたことを確認するためにhtmlを見ましたが、ブラウザには表示されませんでした。

divで改行を確認するために、特定のスタイルを使用する必要がありますか?

var eventNameArray = MyTestObject.SelectMany(x => x.Events) 
           .Select(x => x.EventName) 
           .ToArray(); 

をしたり、個別の値

var eventNameArray = MyTestObject.SelectMany(x => x.Events) 
           .Select(x => x.EventName) 
           .Distinct() 
           .ToArray(); 

を必要とするなら、あなたは単一の文字列に結果を joinできます

+1

が、私はそれが戻っている改行は、 'htmlとして
を'のようなものを望んでいる/ R/N 'であることを前提としています'。私は 'Environment.NewLine'をそれに置き換えて、それがうまくいくかどうかを調べるでしょう。 – gbishop3

+0

は '' \ r \ n "'に置き換えられないか、実際にはHTMLの改ページを使用しません。 "
" – MethodMan

+0

_改行を表示するためにdivで特定のスタイルを使用しますか? 'white-space:pre-line' –

答えて

0

HTMLの空白は無視されます。したがって、文字列内の改行文字を返すのは、実際にレンダリングされるHTMLではなく、ソースにのみ影響します。改行を表示する場合は、これまでと同じように<br />を使用する必要があります。しかし、Razorはデフォルトで文字列にHTMLをエスケープするという問題があります。その動作を回避するには、Html.Rawを使用する必要があります。そして、

string test = string.Join("<br />", MyTestObject.Events.Where(x => x.Type == 99).Select(x => x.Reference)); 

@Html.Raw(test); 
1

付けがMyTestObjectlistあるあなた、これを試してみてください。 <br/ >が必要な場合は、それで置き換えてください。 \n<br />ではなく、htmlでは改行を行うには<br />が必要です。

var eventNames = string.Join("<br />", eventNameArray); 
関連する問題