我正在尝试将未知数量的复选框绑定到布尔值列表。经过数小时的搜索,我还没有找到任何解决方案。
在我看来,这是代码的相关部分:
@foreach (Device d in Data.GetDevices())
{
<label asp-for="NewRegistration.Devices">@d.Name</label>
<input asp-for="NewRegistration.Devices" class="checkbox" type="checkbox" />
}
Run Code Online (Sandbox Code Playgroud)
循环有效,但是当我更改类型时,如果复选框的输入给了我这个例外:
InvalidOperationException: 意外的 'asp-for' 表达式结果类型 'System.Collections.Generic.List`1[[System.Boolean, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]' for . 如果“type”是“checkbox”,“asp-for”必须是“System.Boolean”类型。
我尝试放入我的数据的列表包含以下代码:
private List<bool> _devices;
public List<bool> Devices
{
get { return _devices; }
set {_devices = value; }
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何将这些复选框中的值添加到我的布尔值列表中。当我不指定输入的类型时,我不会收到任何错误,但输入的类型是文本。如果我在这些输入框中输入 true 或 false,我的代码就可以正常工作。但我想要一个复选框,而不是要求用户输入 true 或 false。
感谢您的时间!
编辑:我的问题很难解释。我正在验证表单并将其绑定到演示模型 PMRegistration 中定义的注册类的实例。如果片段不够清楚,我会将完整代码放在下面
报名类:
public class Registration
{
public int Id { get; set; }
[Required(ErrorMessage = "required field")]
[MaxLength(50, ErrorMessage = "To long")] …Run Code Online (Sandbox Code Playgroud)