2017-04-27 86 views
1

我想获取选中复选框值的列表。我该怎么做?我正在开发一个ASP.NET MVC 5应用程序。这个程序有一个基本的形式。 enter image description here获取asp.net中选中复选框值的列表mvc

我的视图代码

@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="[email protected](permission.FieldId)_[@peruserAction.Id]" /> 
          } 
          else 
          { 
           <input type="checkbox" name="[email protected](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; 
    } 

我的控制器代码:

+1

嗯......你似乎已经走出留下控制器代码控制器? –

+1

是否有你没有使用Html.CheckBoxFor的原因? – Neil

+0

你不给你的复选框一个“价值”。但是你不能使用'foreach'循环为集合生成表单控件 - 参考[这个答案](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943 )也不能将隐藏的输入绑定到复杂对象。 –

回答

0

的复选框的名称应该是相同的被绑定在一个列表中。

+2

这并不能解答这个问题。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/15966974) – bc004346

+0

问题是:“我想获取选中的复选框值列表”和一个示例,他将不同的名称绑定到其复选框列表。所以这不是一个评论或批评,只是答案。如果不清楚,我可以写一个例子,其中名称相同。 –

0

你可以做到这一点与HttpPost,你也可以使用jQuery

var checkedArray= 
$('input:checkbox').each(function() {//iterate all checboxes in page 
     var data={ "IsChecked": this.checked ,"Name":this.attr('name')} 
     checkedArray.push(); 

     }); 

做到这一点,然后发送checkedArray通过AJAX