如何使用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});