asp.net-mvc-3 – ASP.Net MVC 3多个CheckBoxLists
我正在开发一个ASP.Net MVC 3 Web应用程序,我最近发布了一个关于如何显示复选框列表的问题
ASP.Net MVC 3 Retrieve Checkbox List Values 感谢RubbleFord和Darin Dimitrov的帮助,我能够让这个工作. 这适用于一个复选框列表,但是,我现在需要能够在同一个视图上显示多个复选框列表,即查看附加的图像. 我用来当前显示一个列表的ViewModels如下; public class ViewModelShiftSubSpecialties { public ListItem specialtyName { get; set; } public IEnumerable<ViewModelCheckBox> SubSpecialityList { get; set; } } public class ViewModelCheckBox { public string Id { get; set; } public string Name { get; set; } public bool Checked { get; set; } } 在我的控制器中,我填充了ViewModelShiftSubSpecialties,如下所示: var subSpecialties = GetSubSpecialtiesForSpecialty(5); ViewModelShiftSubSpecialties viewModel = new ViewModelShiftSubSpecialties(); var checkBoxList = new List<ViewModelCheckBox>(); viewModel.specialtyName = _listService.GetListItemByID(5); //Medicine Specialty foreach (var item in subSpecialties) { ViewModelCheckBox chkBox = new ViewModelCheckBox { Id = item.subID.ToString(),Name = item.ListSub.description,Checked = false }; checkBoxList.Add(chkBox); } viewModel.SubSpecialityList = checkBoxList; 在我的视图中,我显示列表名称,并使用编辑器模板显示复选框列表 <h3>@Model.specialtyName.description</h3> @Html.EditorFor(m => m.SubSpecialityList) 但是,我完全不知道如何让上面的代码在一个View上使用多个复选框列表.这甚至可能吗? 如果有人能帮助我,我真的很感激. 谢谢. 解决方法
看起来你已经完成了所有的工作.您已经有一个可以与ViewModelCheckBox IEnumerable一起正常工作的编辑器模板.如果您不能将它们重用于相同的数据类型,则编辑器模板将无用.你只需要使用它三次.只需扩展您的ViewModel
public class ViewModelShiftSubSpecialties { public ListItem specialtyName { get; set; } //Might need 3 of these public IEnumerable<ViewModelCheckBox> SubSpecialityList1 { get; set; } public IEnumerable<ViewModelCheckBox> SubSpecialityList2 { get; set; } public IEnumerable<ViewModelCheckBox> SubSpecialityList3 { get; set; } } 在你的控制器中创建所有三个(并给我们更好的名字,然后我做). 然后在你的视图中 @Html.EditorFor(m => m.SubSpecialityList1) @Html.EditorFor(m => m.SubSpecialityList2) @Html.EditorFor(m => m.SubSpecialityList3) 或者,您可以创建一个包含单个专业名称和IEnumerable ViewModelCheckBox的类,并让您的ViewModel具有此新类的IEnumerable.然后为这个新类创建一个新的编辑器模板.如果您的列表大小可变/可能会发生变化,我认为这是值得的.否则我会使用早期的解决方案进行简单的修复. public class ViewModelShiftSubSpecialties { public class IEnumerable<SubSpecialty> { get; set; } } public class SubSpecialty { public ListItem specialtyName { get; set; } public IEnumerable<ViewModelCheckBox> SubSpecialityList } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |