2012-04-18 4 views
3

Я разрабатываю веб-приложение ASP.Net MVC 3 с использованием Entity Framework 4.1. У меня возникли проблемы с отображением CheckBoxList. Позволь мне объяснить.ASP.Net MVC 3 EditorFor CheckBoxList

У меня есть два 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; } 
} 

В моем контроллере я заселить мои ViewModels

 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); 

У меня также есть частичный вид, который используется в качестве EditorTemplate для отображения флажков

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

Затем в моем представлении я пытаюсь фильтровать через Model.Specialty и классифицировать ite мс в три checkboxlists основанные на их специальности, а именно:

@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) 
} 

} 

Но это, кажется, не работает вообще, что это дает мне ничего в 1-й или 2-й CheckBoxList, а затем все элементы списка в поле Третий checkboxlist. В основном то, что я пытаюсь достичь что-то вроде этого

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 /> 

В этом случае, вы представляемый в List<ViewModelCheckBox> при использовании @Html.EditorFor(m => m.SpecialtyList), но то, что вы должны послать это ViewModelCheckBox:

@Html.EditorFor(m => sub) 

Надеюсь, я правильно вас понял.

+0

Спасибо Марио, ваше решение работает красиво. – tgriffiths

Смежные вопросы