加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – ASP.Net MVC 3多个CheckBoxLists

发布时间:2020-12-16 06:24:30 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个ASP.Net MVC 3 Web应用程序,我最近发布了一个关于如何显示复选框列表的问题 ASP.Net MVC 3 Retrieve Checkbox List Values 感谢RubbleFord和Darin Dimitrov的帮助,我能够让这个工作. 这适用于一个复选框列表,但是,我现在需要能够在同一个视图
我正在开发一个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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读