2016-05-10 8 views
0

私は現在、MVCアプリケーションで作業していて、データベースに情報を保存しています。私は保存するこの情報からDBからチェックボックスの値を取得する際の問題

string 1, string 2, string 3 

として独自の列に保存されているいくつかのチェックボックスの値は、今私は、これらの値を取得し、別のページで確認し、チェックボックスを作成しようとしています。しかし、私は2つのチェックボックスを取得する必要があります私は1つを取得します。返される値は正しいですが、一つだけチェックボックスが私のコントローラでビュー

に表示されているいくつかの奇妙な理由のために私は、私は

@foreach(var items in Model.EightWatseChkBox) 
{ 
    @Html.DisplayFor(model => items.Text) 
    @Html.CheckBoxFor(model => items.Checked) 
} 
を持っているビューで、次のコード

IEnumerable<MyEntity> myEntity = entityRepo.GetAll().Where(a => a.UserId == id); 
List<CheckBox> checkBoxList = new List<CheckBox>(); 
foreach (var items in myEntity) 
{ 
    checkBoxList.Add(
    new CheckBox 
    { 
     Text = items.EightWaste, 
     Checked = true, 
     Value = items.EightWaste, 
    }); 
} 

を持っています

そして、私のUI出力は

Output

のように見えます

誰かが私がどこに間違って行くのか教えてもらえますか?

+0

は 'myEntity.Count()の値は何でありますか;'? - あなたは1つのアイテムしか持たず、 'EightWaste'値は' 'Defects、Transportation" ' –

+0

です。また、' 'foreach'ループはあなたのモデルに束縛されません。 'CheckBox'の型に対して' for'ループまたは 'EditorTemplate'を使う必要があります –

+0

あなたはこの質問をチェックしましたか:http://stackoverflow.com/questions/14730746/getting-checkbox-value-in-asp-net-mvc -4? – JJP

答えて

1

で保存されていることでしょう、あなたは文字列を分割する必要がありますアレイに。

MyEntity data = entityRepo.GetAll().Where(a => a.UserId == id).FirstOrDefault(); 

Model.EightWatseChkBox = data.EightWaste.Split(new char[]{ ',' }).Select(x => new CheckBox() 
{ 
    Text = x, 
    Checked = true 
}).ToList(); 

モデル内のプロパティEightWatseChkBoxがビューに

@for (int i = 0; i < Model.EightWatseChkBox.Count; i++) 
{ 
    @Html.DisplayFor(m => m.EightWatseChkBox[i].Text) 
    @Html.CheckBoxFor(m => m.EightWatseChkBox[i].Checked) 
} 

forループを使用することができますし、POSTメソッドでは、あなたが選択した値に参加できるようにIList<CheckBox>ないIEnumerable<CheckBox>にする必要があることに注意してくださいあなたがを使用できない理由の詳細については、再び

string[] selected = model.EightWatseChkBox.Where(x => x.Checked).Select(x => x.Text); 
string combined = String.Join(",", selected); 

this answerを参照し、コレクションにバインドするループ(あなたがIList<CheckBox>にモデルのプロパティを変更することができない場合、あなたはEditorTemplateオプションを使用することができ、注意してください)

+0

私のモデルのプロパティは 'List 'です。このおかげで、私はこれと一緒に行くと私はどのように取得することをお知らせします – Code

+0

これは働いてスポット!もう一度ありがとう – Code

-1

お試しください。

あなたのコントローラには次のような書き込みがあります。

IEnumerable<MyEntity> myEntity = entityRepo.GetAll().Where(a => a.UserId == id); 

ViewBag.Chekboxlist = myEntity; 

そしてあなたの視野はあなたの値がそのように各「単語」のチェックボックスを生成するために、カンマ区切りの文字列としてフィールドに

@foreach(var items in Model.EightWatseChkBox) 
{ 
     @Html.DisplayFor(model => items.Text) 
     if(ViewBag.Chekboxlist != null) 
     { 
      IEnumerable<MyEntity> myEntity = (IEnumerable<MyEntity>)ViewBag.Chekboxlist; 
      foreach(var item in myEntity) 
      { 
       @Html.CheckBoxFor(model => item.Checked) 
      } 
     } 
} 
関連する問題