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

如何使用jquery在mvc的编辑页面中获取所有已选中复选框的值,jquery,asp.net-mvc,checkbox,Jquery,Asp.net Mvc,Checkbox,我有一个编辑页面,用户必须在其中选中复选框,然后它所选的值将提交到正在工作的数据库,但有一个问题,我必须捕获在创建时选中的复选框的所有选定值。如何在“编辑”页面上获取已选中的复选框值。 这是我提交的代码 $(document).ready(function() { $('#btn-gn').click(function () { var list = []; $('#MySelection input:checked').each(function ()

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

$(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>
$(文档).ready(函数(){
$('#btn gn')。单击(函数(){
var列表=[];
$('#MySelection输入:选中')。每个(函数(){
list.push(这个名称);
});
//现在名称包含所有选中复选框的名称
//用ajax为excamle post做点什么
$.ajax({
url:'@url.Action(“RoleEdit”,“Role”)',
键入:“POST”,
数据:{参数:列表},
成功:功能(结果){
警惕(“成功”);
},
错误:函数(结果){
警报(“错误!”);
}
});//结束ajax
});
});
@对于(int i=0;i
这是我的控制器:

[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;
        }
[HttpGet]
public ActionResult RoleEdit(int id,ViewModelRole ViewModelRole)
{
viewModelRole.Role=roleService.GetRole(id);
viewModelRole.PermissionsList=preFlightDbContext.Permissions.ToList();
返回视图(viewModelRole);
}
[HttpPost]
public ActionResult RoleEdit(ViewModelRole viewModelRoleForAdd,字符串[]标记)
{
字符串addPer=delemetedString(标记“,”);
尝试
{
if(ModelState.IsValid)
{
viewModelRoleForAdd.Role=roleService.UpdateRole(角色);
roleService.SaveRole();
返回操作(“角色列表”);
}
}
捕获(数据异常)
{
ModelState.AddModelError(“,”无法保存更改。请重试,“+
“如果问题仍然存在,请与系统管理员联系。”);
}
返回视图(viewModelRoleForAdd);
}
私有字符串delemeter字符串(字符串[]输入,字符delemeter)
{
字符串输出=string.Empty;
for(int i=0;i
我建议如下:

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>
}
@model IEnumerable
@使用(Html.BeginForm())
{  
@对于(模型中的var项目)
{
@CheckBoxFor(x=>@item.IsSelected,新的{name=“tags”,@class=“no margin”})
@项目名称
}
}

您可以添加控制器类吗。代码看起来很正确,我正在更新我的代码。您可以在复选框上添加复选更改事件,并保留已更改名称的列表。是否要更改复选框的名称?还是值?@Stephen Muecke我希望在编辑页面中出现复选框,并选中复选框扫描您请给出完整的示例我尝试的是获取一些错误viewModelRole.Permiss=preFlightDbContext.Permissions.Select(p=>new List(){Id=p.PermissionId,Name=p.PermissionName});