2012-04-18 23 views
3

私はEntity Framework 4.1を使用してASP.Net MVC 3 Webアプリケーションを開発しています。 CheckBoxListの表示に問題があります。私に説明させてください。ASP.Net MVC 3 EditorFor CheckBoxList

私は私のコントローラ内の2のViewModelの

public class ViewModelShiftSubSpecialties 
{ 
    public IEnumerable<ViewModelCheckBox> SpecialtyList { get; set; } 
} 

public class ViewModelCheckBox 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public bool Checked { get; set; } 
    public string Specialty { get; set; } 
} 

を持って、私は

 IList<RelationshipGradeSub> gradeSubSpecialties = GetSubSpecialtiesForGrade(firstShiftGrade.gradeID); 

     ViewModelShiftSubSpecialties viewModel = new ViewModelShiftSubSpecialties(); 

     var checkBoxList = new List<ViewModelCheckBox>(); 

     foreach (var item in gradeSubSpecialties) 
     { 
      ViewModelCheckBox chkBox = new ViewModelCheckBox { Id = item.subID.ToString(), Name = item.ListSubSpecialty.description, Checked = false, Specialty=item.ListSubSpecialty.ListItemParent.description }; 
      checkBoxList.Add(chkBox); 
     } 

     viewModel.SpecialtyList = checkBoxList; 

     return View(viewModel); 

私のviewmodelsを移入私はまた

@Html.HiddenFor(x => x.Id)   
@Html.CheckBoxFor(x => x.Checked) 
@Html.LabelFor(x => x.Name, Model.Name)<br /> 
私のチェックボックスを表示するためにEditorTemplateとして使用されている部分図を持っています

私の見解では、Model.Specialtyをフィルタリングし、それを分類しようとしています3 checkboxlistsにMSがすなわち自分の専門に基づいて:

@foreach (var sub in Model.SpecialtyList) 
{ 
if (sub.Specialty.Equals("Medicine")) 
{ 
    @Html.EditorFor(m => m.SpecialtyList) 
} 
else if (sub.Specialty.Equals("Surgery")) 
{ 
    @Html.EditorFor(m => m.SpecialtyList) 
} 
else if (sub.Specialty.Equals("Pathology")) 
{ 
    @Html.EditorFor(m => m.SpecialtyList) 
} 

} 

をしかし、これは何これは私を与えることは第一または第二CheckBoxListの中には何もあり、中にすべてのリスト項目ではありません、まったく動作していないようです3番目のチェックボックスリスト。このような基本的に私は何を達成しようとしているある

enter image description here

誰かが私にこの作業を取得するためにいくつかのポインタをお願いできますか?

ありがとうございました。

+0

デバッグして、Model.SpecialtyListアイテム0と1のインデックス要素を確認してください – Yorgo

+1

これを使ってみましたか:@Html.EditorFor(m => sub) '? –

+0

だから実際に何を得ているのですか? – mattytommo

答えて

2

私は、チェックボックスを表示するために、あなたのEditorTemplateを推測がタイプViewModelCheckBoxのためである:その場合は

@Html.HiddenFor(x => x.Id)   
@Html.CheckBoxFor(x => x.Checked) 
@Html.LabelFor(x => x.Name, Model.Name)<br /> 

@Html.EditorFor(m => m.SpecialtyList)を使用しているとき、あなたはList<ViewModelCheckBox>に送っているが、何あなたが送るべきであることはViewModelCheckBoxです:

@Html.EditorFor(m => sub) 

私はあなたを正しく理解してくれることを願っています。

+0

おかげでマリオ、あなたのソリューションはうまく動作します。 – tgriffiths