gpt4 book ai didi

c# - MVC 复选框分组

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:39 26 4
gpt4 key购买 nike

我有一个 View 需要一些描述星期几的复选框。我想返回 Controller 选择了哪些框。我从各种 Google 搜索等中找到了一些帮助,这就是我所拥有的。

第 1 部分:

在 Controller 中:

vm.AllDays = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>().ToList();

在 View 中:

@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 参数中获取了选定的日期。但是,我很好奇并将复选框上的“名称”属性更改为模型中我最终希望这些值转到的字段。总之,我的 View 模型包含一个对象,其中有一个列表。该列表是我希望所选值最终出现的集合。但这是相关代码。

第 2 部分

模型片段:

public class SubscriptionDetailsModel {
public CronTabModel CrontabModel { get; set; }
//...
}

public class CronTabModel {
public List<DayOfWeek> On { get; set; }
}

Controller :

[HttpPost]
public ActionResult _AddEdit(SubscriptionDetailsModel vm) {
//etc, etc, etc
}

当然还有 View :

@foreach (var day in Model.AllDays) {
<input type="checkbox" name="On" value="@day"/> <label>@day</label><br />
}

编辑:我看到令人困惑的结果的原因是我 View 中其他地方的拼写错误。

从技术上讲,第 1 节中的代码可用于我的情况,我可以进行一些字符串解析等。是否可以使 Checkbox 组从一个集合 (Model.AllDays) 中填充并在第二个集合中返回 (Model .CronTabModel.On)?

最佳答案

绑定(bind)到列表的模型有点笨拙,但有可能。 MVC 存在索引间隙问题,他们确实构建了一个帮助程序来修复它。隐藏字段让 MVC 知道间隙,以便它可以有效地绑定(bind)。

@for (var index =; index < Model.AllDays.Count(); index++) {
@Html.Hidden("AllDays.Index", index)
@Html.CheckBoxFor(m => Model.AllDays[Index], new { Value= Model.AllDays[index] }
<label>@Model.AllDays[Index]</label><br />
}

这应该让您绑定(bind)到一个复选框列表,这些复选框将它们的值发回并绑定(bind)到您模型上名为 AllDays 的属性。

如果您想更改名称,您将需要更改您传递的模型上的名称。这样做允许 MVC 将索引器添加到名称上,所以你最终得到

AllDays[0] = "Sunday"
AllDays[1] = "Monday"

等等等等

关于数组绑定(bind)的更多阅读 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

关于c# - MVC 复选框分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com