如何使用jquery在mvc的编辑页面中获取所有已选中的复选框值

时间:2014-12-08 10:34:44

标签: jquery asp.net-mvc checkbox

我有一个编辑页面,其中用户必须选中复选框,然后它选择的值将被提交到正在工作的数据库但是有一个问题我必须捕获所选的复选框的所有选定值创作时间。如何在编辑页面上获得已选择的复选框值。 这是我提交的代码。

$(document).ready(function() {
    $('#btn-gn').click(function () {
        var list = [];
        $('#MySelection input:checked').each(function () {
            list.push(this.name);
        });
        // now names contains all of the names of checked checkboxes
        // do something with it for excamle post with ajax
        $.ajax({
            url: '@Url.Action("RoleEdit","Role")',
            type: 'POST',
            data: { Parameters: list},
            success: function (result) {
                alert("success");
            },
            error: function (result) {
                alert("error!");
            }
        });   //end ajax
    });
});



 <div id="MySelection">
        @for (int i = 0; i < Model.PermissionsList.Count; i++)
            {
        <div class="row">
        <div class="col-md-1 col-sm-1">

           <input type="checkbox" name="tags" class="no-margin"
            id="=ids" value="@Model.PermissionsList[i].PermissionId" >

       </div>
        <div class="col-md-11 col-sm-11">
              @Model.PermissionsList[i].PermissionName

       </div>
        </div>
            }
        </div>

这是我的控制器:

[HttpGet]
        public ActionResult RoleEdit(int id,ViewModelRole viewModelRole)
        {

             viewModelRole.Role = roleService.GetRole(id);
             viewModelRole.PermissionsList = preFlightDbContext.Permissions.ToList();
            return View(viewModelRole);
        }

        [HttpPost]
        public ActionResult RoleEdit(ViewModelRole viewModelRoleForAdd, string[] tags)
        {
            string addPer = delemetedString(tags, ',');
            try
            {
                if (ModelState.IsValid)
                {

                   viewModelRoleForAdd.Role= roleService.UpdateRole(role);
                    roleService.SaveRole();
                    return RedirectToAction("RoleLists");
                }
            }
            catch (DataException)
            {
                ModelState.AddModelError("", "Unable to save changes. Try again, " +
                  "and if the problem persists see your system administrator.");
            }
            return View(viewModelRoleForAdd);
        }



private string delemetedString(string[] input, char delemeter)
        {
            string output = String.Empty;
            for (int i = 0; i < input.Length; i++)
            {
                if (i == input.Length - 1)
                    output += input[i];
                else
                    output += input[i] + delemeter;
            }
            return output;
        }

1 个答案:

答案 0 :(得分:0)

我会建议这样的事情:

public class PermissionsListItem()
{
   public int Id {get; set;}
   public string Name {get; set;}
   public bool isChecked {get; set;}
}

现在控制器动作方法:

public ViewResult Index()
{
   ...code to build up a List<PermisionListItem>()

   return View(List<PermissionListItem> model goes here);
}

[POST]
public ActionResult Edit(List<PermissionListItem> items)
{
   iterate through your model to see what is checked.
}

剃刀视图

@model IEnumerable<PermissionListItem>

<div id="MySelection">
@using(Html.BeginForm())
{  
    @for (var item in model)
    {
        <div class="row">
        <div class="col-md-1 col-sm-1">
            @Html.CheckBoxFor(x => @item.IsSelected, new { name="tags", @class="no-margin"})

       </div>
       <div class="col-md-11 col-sm-11">
           @item.Name
       </div>
   </div>
   }
</div>
}