我有一个视图,需要一些复选框来描述一周中的几天。我想返回控制器选择了哪些框。我从各种谷歌搜索等中找到了一些帮助,这就是我所拥有的。
第 1 节:
在控制器中:
vm.AllDays = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>().ToList();
在视图中:
@foreach (var day in Model.AllDays) {
<input type="checkbox" name="days" value="@day"/> <label>@day</label><br />
}
然后在我的帖子处理程序中:
[HttpPost]
public ActionResult _AddEdit(SubscriptionDetailsModel vm, IEnumerable<string> days) {
//etc, etc, etc
}
这行得通,我在 days 参数中获得了选定的日期。但是,我很好奇并将复选框上的“名称”属性更改为模型中我最终希望这些值转到的字段。总之,我的视图模型包含一个对象,其中包含一个列表。该列表是我希望所选值最终出现的集合。但这是相关代码。
第 2 节
模型片段:
public class SubscriptionDetailsModel {
public CronTabModel CrontabModel { get; set; }
//...
}
public class CronTabModel {
public List<DayOfWeek> On { get; set; }
}
控制器:
[HttpPost]
public ActionResult _AddEdit(SubscriptionDetailsModel vm) {
//etc, etc, etc
}
当然,查看:
@foreach (var day in Model.AllDays) {
<input type="checkbox" name="On" value="@day"/> <label>@day</label><br />
}
编辑:我看到令人困惑的结果的原因是由于我的视图中其他地方的拼写错误。
从技术上讲,第 1 节中的代码适用于我的情况,我可以进行一些字符串解析等。是否可以使 Checkbox 组从一个集合(Model.AllDays)填充并在第二个集合(Model.CronTabModel.上)?