Asp.net mvc 3 Net MVC 3多个复选框列表
我正在开发一个ASP.NETMVC3Web应用程序,最近我发布了一个关于如何显示复选框列表的问题Asp.net mvc 3 Net MVC 3多个复选框列表,asp.net-mvc-3,viewmodel,checkboxlist,mvc-editor-templates,Asp.net Mvc 3,Viewmodel,Checkboxlist,Mvc Editor Templates,我正在开发一个ASP.NETMVC3Web应用程序,最近我发布了一个关于如何显示复选框列表的问题 <h3>@Model.specialtyName.description</h3> @Html.EditorFor(m => m.SubSpecialityList) 多亏了卢布福德和达林·迪米特罗夫的帮助,我才得以实现这一目标 这对于一个复选框列表非常有效,但是,我现在需要能够在同一视图上显示多个复选框列表,即,请参见所附图像 我当前用于显示一个列表的ViewM
<h3>@Model.specialtyName.description</h3>
@Html.EditorFor(m => m.SubSpecialityList)
多亏了卢布福德和达林·迪米特罗夫的帮助,我才得以实现这一目标
这对于一个复选框列表非常有效,但是,我现在需要能够在同一视图上显示多个复选框列表,即,请参见所附图像
我当前用于显示一个列表的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; }
}
public类ViewModelShiftSubSpecialties
{
公共ListItem specialtyName{get;set;}
公共IEnumerable子专业列表{get;set;}
}
公共类ViewModelCheckBox
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共布尔检查{get;set;}
}
在我的控制器中,我填充ViewModelShiftSubspecial,如下所示:
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;
var subSpecialties=getsubspecialties for speciality(5);
ViewModelShiftSubSpecialties viewModel=新ViewModelShiftSubSpecialties();
var checkBoxList=新列表();
viewModel.specialtyName=\u listService.GetListItemByID(5)//医学专业
foreach(子专业中的var项目)
{
ViewModelCheckBox chkBox=newViewModelCheckbox{Id=item.subID.ToString(),Name=item.ListSub.description,Checked=false};
复选框列表。添加(chkBox);
}
viewModel.SubSpecialityList=复选框列表;
在我的视图中,我显示列表名称,并使用编辑器模板显示复选框列表
<h3>@Model.specialtyName.description</h3>
@Html.EditorFor(m => m.SubSpecialityList)
@Model.specialtyName.description
@EditorFor(m=>m.subspecialist)
然而,如何让上述代码在一个视图中使用多个复选框列表,我完全被难住了。这可能吗
如果有人能帮我,我将不胜感激
谢谢。看起来你已经完成了所有的工作。您已经有了一个编辑器模板,该模板可以与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; }
}
或者,您可以创建一个包含单个专业名称和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
}
public类ViewModelShiftSubSpecialties
{
公共类IEnumerable{get;set;}
}
公共类副专业
{
公共ListItem specialtyName{get;set;}
公共IEnumerable子专业列表
}
这看起来不错,谢谢。你能详细介绍一下你的第二个解决方案吗?谢谢。谢谢你的阿芬克尔斯坦-这真的很有用。