2016-12-28 14 views
0

MS Sqlテーブルから文字列を取得していますが、TomまたはSpeaker 1、Speaker 2のように1つの名前または区切り名しか指定できません。
使用してコントローラ:私はリストを表示するには、次の使用を考慮してMVC c#ViewBagの文字列からのリスト

    Event cevent = db.Events.Find(id); 
        string speakers = cevent.Speakers;  
        ViewBag.speakers = ""; 
        if (!String.IsNullOrWhiteSpace(speakers) && 
        speakers.Contains(",")) 
        { 
         ViewBag.speakers = speakers.Split(',').ToList(); 
        } 
        else 
        { 
         ViewBag.speakers = speakers; 
        } 
        return View(cevent); 

  <ul> 
      @foreach (var item in ViewBag.speakers) 
      { 
       <li> @item </li> 
      } 
     </ul> 

リストで素晴らしい作品、私が取得:

ViewBag 1つだけのアイテムを持っている場合

しかし、私が手:

• T 
• o 
• m 
+0

var list = ListBag.speakersをList (); list.count> 0がforeachを使用しているかどうかを確認してください。他の場合は通常のアイテム –

+0

をバインドするか、という文字列を変更することができます。スピーカーが文字列の場合、List obj1 = new List (); obj1.Add(スピーカー); ViewBag.speakers = obj1; –

答えて

1

あなたは関係なく、1または複数のスピーカーがあるかどうかのビューに列挙スピーカーのオブジェクトを渡す常に考えるかもしれません。

あなたのビューでは、 "Tom"の場合、文字のリストであるスピーカーオブジェクトを列挙しています。代わりに、このような何かを試してみてください:

コントローラで:

ViewBag.speakers = new List<string>(); 
string speakers = cevent.Speakers; 
var listOfSpeakers = speakers.Split(',').ToList(); 

foreach (var speaker in listOfSpeakers) 
{ 
    ViewBag.speakers.Add(speaker) 
} 

複数のスピーカーがビューに渡されているかどうかに応じて異なるHTML出力をフォーマットする必要がある場合は、あなたが使用することができますif(ViewBag.speakers.Count > 1)条件付きブロックのスピーカーリストに出力し、その場合は出力を別に処理します。

+0

エラー '文字列'に 'Count'の定義が含まれていません – hncl

+0

@hnclはい、列挙可能なオブジェクトのカウントだけを呼び出すことができます。 1つの要素だけが含まれていても、リストを常にビューに渡すことができます。私はコントローラの変更を提案するように編集しました。 –

+0

私は明確にする必要があります.Count()はLINQ拡張メソッドであり、IEnumerable型で機能しますが、.CountはListオブジェクト自体のプロパティであり、一部です。 –

関連する問題