我正在使用 Entity Framework 4.1 开发一个 ASP.Net MVC 3 Web 应用程序。我无法显示 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 并根据它们的专业将项目分类为三个复选框列表,即:
@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)
}
}
但这似乎根本不起作用,这给我的是第一个或第二个复选框列表中的任何内容,然后是第三个复选框列表中的所有列表项。基本上我想要实现的是这样的
有人可以给我一些指示以使其正常工作吗?
谢谢。