gpt4 book ai didi

c# - 提交表单时复选框列表丢失

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

我有这些员工及其角色的 View 模型:

public class EmployeeViewModel
{
public int Id { get; set; }
// some more properties
public List<EmployeeRoleViewModel> EmployeeRoles { get; set; }
}

public class EmployeeRoleViewModel
{
public int Id { get; set; }
public int EmployeeId { get; set; }
public int RoleId { get; set; }
public string Title { get; set; }
public bool Selected { get; set; }
}

我在编辑 View 中显示这样的复选框:

@for (int i = 0; i < Model.EmployeeRoles.Count(); i++)
{
<label>
<input type="checkbox" asp-for="@Model.EmployeeRoles[i].Selected" />
@Model.EmployeeRoles[i].Title
</label>
}

这会为选中的复选框生成以下 HTML:

<input type="checkbox" checked="checked" 
id="EmployeeRoles_0__Selected"
name="EmployeeRoles[0].Selected" value="true" />

...这是未经检查的:

<input type="checkbox" 
id="EmployeeRoles_2__Selected"
name="EmployeeRoles[2].Selected" value="true" />

所有复选框都正确呈现,所有正确的复选框都带有复选标记。

将表单发布到此 Controller 方法(为简洁起见进行了简化):

[HttpPost]
public async Task<IActionResult> Edit(int id,[Bind("Id,EmployeeRoles")] Employee employee)
{
db.Update(employee);
await db.SaveChangesAsync();
return RedirectToAction("Details", "Branches");
}

问题是 employee.EmployeeRoles 是一个长度为 0 的列表,即使选中了多个复选框也是如此。我做错了什么?

最佳答案

input 字段的name 必须是

name="Employee.EmployeeRoles[index].Selected"

为了将 EmployeeRoles[index] 绑定(bind)到 Employee 对象中的 EmployeeRoles 列表。

关于c# - 提交表单时复选框列表丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53471487/

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