如何在MVC模型中表示一个月的复选框

我无法理解如何使用MVC创建下表,并成功将其绑定到模型:

在此处输入图像描述

我基本上需要跟踪一个事件需要发生的月份的哪几天。 这是我对模型的尝试:

编辑 :这不是一个月,而是任意4周的周期

public class ScheduleViewModel { public int PatientId { get; set; } public List Schedules { get; set;} } public class Schedule { public int Week { get;set;} public Day Day { get;set;} public bool IsSelected { get;set;} } public enum Day { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } 

我可以成功渲染一个视图(不受模型约束)。 我意识到我需要在输入上使用@ html.CheckBoxFor。

这是我的html视图的粗略副本:

 @model WebApplication10.Models.ScheduleViewModel @using (Html.BeginForm()) {  @{ foreach (Day t in Enum.GetValues(typeof(Day))) {  } }  @{ for (int i = 1; i <= 4; i++) {  @foreach (Day t in Enum.GetValues(typeof(Day))) {  }  } } 
@t
Week @i
}

如何成功发布选中的复选框? 我的ViewModel有意义吗?

我建议你改变你的视图模型

 public class DayVM { public Day Day { get; set; } public bool IsSelected { get; set; } } public class WeekVM { public WeekVM() { Days = new List(); Days.Add(new DayVM() { Day = Day.Sunday }); Days.Add(new DayVM() { Day = Day.Monday }); .. etc } public List Days { get; set; } } public class ScheduleViewModel { public ScheduleViewModel() { Weeks = new List(); Weeks.Add(new WeekVM()); .... etc } public int PatientId { get; set; } public List Weeks { get; set;} } 

然后在视图中

 for(int i = 0; i < Model.Weeks.Count; i++) {  Week @i for(int j = 0; j < Model.Weeks[i].Days.Count; j++) {  @Html.CheckBoxFor(m => m.Weeks[i].Days[j].IsSelected)  }  } 

旁注:我认为你真的不需要你自己的枚举 – 你可以使用DayOfWeek枚举,例如Days.Add(new DayVM() { Day = DayOfWeek.Sunday }); 。 另请注意,我没有包含Day属性的输入,因为您可以从集合中的索引轻松确定。 实际上,如果手动呈现表标题行,则可能根本不需要Day属性。