【发布时间】:2017-04-27 12:28:02
【问题描述】:
我想获取选定复选框值的列表。我该怎么做?我正在开发一个 ASP.NET MVC 5 应用程序。这个应用程序有一个基本的形式。
我的查看代码
@using (Html.BeginForm())
{
<table class="table">
<thead>
<tr>
<th>Field Name</th>
@foreach (var field in Model.Actions)
{
<th>@field.Name</th>
}
</tr>
</thead>
<tbody>
@foreach (var permission in Model.PermissionUserField)
{
<tr>
<td> @permission.Field.Name</td>
@foreach (var peruserAction in permission.PermissionUserFieldActions)
{
<td>
@if (peruserAction.Active)
{
@Html.HiddenFor(x=> x.PermissionUserFieldForUser)
<input type="checkbox" checked name="field_@(permission.FieldId)_[@peruserAction.Id]" />
}
else
{
<input type="checkbox" name="field_@(permission.FieldId)_[@peruserAction.Id]" />
}
</td>
}
</tr>
}
</tbody>
</table>
<br />
<input type="submit" value="Save" />
}
我的表单模型如下所示:
public class NewViewModel
{
public List<PermissionUserField> PermissionUserField{ get; set; }
public List<PermissionUserField> PermissionUserFieldForUser { get; set; }
public List<Action> Actions { get; set; }
public List<Field> Field { get; set; }
}
public partial class Action
{
public int Id { get; set; }
[StringLength(50)]
public string Name { get; set; }
}
public partial class PermissionUserField
{
public int Id { get; set; }
public int UserId { get; set; }
public User User { get; set; }
public int FieldId { get; set; }
public Field Field { get; set; }
public List<PermissionUserFieldAction> PermissionUserFieldActions { get; set; }
}
public partial class PermissionUserFieldAction
{
public int Id { get; set; }
public int ActionId { get; set; }
public Action Action { get; set; }
public int PermissionUserFieldId { get; set; }
public PermissionUserField PermissionUserField { get; set; }
public bool Active { get; set; } = false;
}
我的控制器代码:
【问题讨论】:
-
嗯...您似乎遗漏了控制器代码?
-
您不使用 Html.CheckBoxFor 是否有原因?
-
你没有给你的复选框一个
value。但是您不能使用foreach循环为集合生成表单控件 - 请参阅 this answer 也不能将隐藏输入绑定到复杂对象。 -
在您的控制器中创建一个 actionMethod,它接受 FormCollection 或您的 ViewModel,当您按下提交时,该方法将被调用,您将自动获取这些复选框的值。
-
使用
for循环和@Html.CheckboxFor()绑定到您的bool属性 -@Html.CheckBoxFor(m => m.PermissionUserField[i].PermissionUserFieldActions[j].IsActive)
标签: c# asp.net-mvc