1

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

我在局部视图中渲染 WebGrid,WebGrid 格式如下: 在此处输入图像描述

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 结果 = 来自 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 中保存所有选中/未选中的项目。单击“保存”按钮后,我应该如何保存所有值。请提出可能的解决方案。

谢谢你们。

4

2 回答 2

1

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

string result = Request.Form["assignChkBx"].ToString();

在您的控制器上,它将为您提供所有选中复选框的列表。希望这会有所帮助。

于 2013-11-04T14:27:05.177 回答
0

虽然它不是一个编码的工作解决方案,但我已经设法通过一个复选框来实现它。应该足够简单,以便将其连接到多个:ASP.NET MVC Display an HTML Table with Checkboxes to Select Row Items

于 2014-02-17T14:45:37.350 回答