【问题标题】:get list of selected checkbox value in asp.net mvc获取asp.net mvc中选定复选框值的列表
【发布时间】: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 =&gt; m.PermissionUserField[i].PermissionUserFieldActions[j].IsActive)

标签: c# asp.net-mvc


【解决方案1】:

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

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 问题是:I want to get list of selected checkbox values 以及他将不同名称绑定到其复选框列表的示例。所以这不是评论或批评,只是答案。如果不清楚,我可以写一个名称相同的示例。
【解决方案2】:

你可以用 HttpPost 做到这一点,你也可以用 JQuery 做到这一点

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

        });

然后通过ajax发送checkedArray到控制器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2013-08-05
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多