保存MVC 4中WebGrid的所有复选框值

时间:2013-11-04 07:29:41

标签: c# .net asp.net-mvc-4

我是MVC 4的新手。我陷入困境,需要一些建议来解决问题。问题场景是:

我在局部视图中渲染WebGrid,WebGrid格式如下: enter image description here

IEnumerable集合与WebGrid绑定。绑定WebGrid的视图是:

@{    
MIS.Areas.AdminModule.Models.AdminModuleViewModels.Module_UserGrp_Permission allPermissions = new MIS.Areas.AdminModule.Models.AdminModuleViewModels.Module_UserGrp_Permission();    

}

    @{
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 10, selectionFieldName: "selectedRow", ajaxUpdateContainerId: "Title");
grid.Pager(WebGridPagerModes.NextPrevious);}
    <div id="gridContent">
        @grid.GetHtml(tableStyle: "webGrid",
            headerStyle: "header",
            alternatingRowStyle: "alt",
            selectedRowStyle: "select",
            columns: grid.Columns(
            grid.Column(header: "Select",
            format: @<input class="select" id="assignChkBx" name="assignChkBx" type="checkbox" @allPermissions.intMenuId/>),
            grid.Column(header: "MenuId", format: (item) => item.intMenuId, style: "description"),
            grid.Column(header: "Menu", format: (item) => item.strMenuName, style: "description", canSort: true),
            grid.Column(header: "Add", format: @<text><input name="Add" type="checkbox"  @(item.boolAddPer == true ? "Checked" : null) id="chkboxIsActiveAdd" /></text>),
            grid.Column(header: "Edit", format: @<text><input name="Edit" type="checkbox"  @(item.boolEditPer == true ? "Checked" : null) id="chkboxIsActiveEdit" /></text>),
            grid.Column(header: "Delete", format: @<text><input name="Delete" type="checkbox"  @(item.boolDeletePer == true ? "Checked" : null) id="chkboxIsActiveDelete" /></text>),
            grid.Column(header: "Grant", format: @<text><input name="Grant" type="checkbox"  @(item.boolGrantPer == true ? "Checked" : null) id="chkboxIsActiveGrant" /></text>)

     ))                       
    </div>

从数据库中获取数据如下(我不使用EntityFramework):

var result =来自dt.AsEnumerable()

中的列
                     select new Module_UserGrp_Permission
                     {
                         intMenuId = Convert.ToInt32(column["MenuId"]),
                         intUserGrpId = Convert.ToInt32(column["UserGrpId"]),
                         strMenuName = Convert.ToString(column["MenuName"]),

                         boolAddPer = Convert.ToBoolean(column["boolGAdd"]),
                         boolEditPer = Convert.ToBoolean(column["boolGEdit"]),
                         boolDeletePer = Convert.ToBoolean(column["boolGDel"]),
                         boolViewPer = Convert.ToBoolean(column["boolGView"]),
                         boolGrantPer = Convert.ToBoolean(column["boolGGrant"])
                     };
        return new List<MIS.Areas.AdminModule.Models.AdminModuleViewModels.Module_UserGrp_Permission>(result);

现在问题是我必须保存此WebGrid中所有已检查/未检查的项目。 单击“保存”按钮后,我该怎么做才能保存所有值。 请提供可能的解决方案。

谢谢大家。

2 个答案:

答案 0 :(得分:1)

由于您的所有复选框都具有相同的名称,因此您可以执行

string result = Request.Form["assignChkBx"].ToString();
控制器上的

将为您提供所有已选中复选框的列表。希望这会有所帮助。

答案 1 :(得分:0)

虽然它不是一个经过编码的工作解决方案,但我已经成功地使用了一个复选框。应该足够简单,可以连接多个:ASP.NET MVC Display an HTML Table with Checkboxes to Select Row Items