如何在Grid.MVC中选中复选框行值

时间:2014-09-01 12:04:21

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

  

您好我已经在asp .net mvc 4中包含了Grid.MVC我能够显示   网格中的复选框,但我如何知道特定的复选框是   因为我想将它发布到服务器并检查它,所以连续选择   在控制器端下面是代码的任何建议   欢迎,有什么办法可以放置标题的复选框

@Html.Grid(Model).Columns(columns =>
                    {


                        columns.Add().Encoded(false).Sanitized(false).SetWidth(10).RenderValueAs(o => Html.CheckBox("checked", false));

                        columns.Add().Encoded(false).Sanitized(false).Titled("Headline").SetWidth(220).RenderValueAs(news => @Html.ActionLink(news.HeadLine, "Details", new { Id = news.Id }));

                        columns.Add(news => news.Time).Titled("News Time").SetWidth(110).Sortable(true).Filterable(true);

                    }).WithPaging(20)

3 个答案:

答案 0 :(得分:1)

将值属性添加到复选框,将其值设置为news.Id(如果news.Id是主键或唯一的其他设置一些值,您可以通过该值识别控制器中的已检查行)。 将name属性添加到复选框,并为所有复选框指定相同的名称。

Html.CheckBox("checked", false, new {name = "assignChkBx"})

在控制器中使用带有表单集合对象的操作来获取复选框值

 public void Controls(FormCollection form)

您将只获取FormCollection中已检查的值。

  var checkBox = form.GetValues("assignChkBx");
   if (checkBox != null)
                    {
                        foreach (var id in checkBox)
                        {
                        }
                     }

答案 1 :(得分:1)

对于迟到的回复感到抱歉,但今天我发现自己有同样的问题。

以下代码可以根据需要使用:

    columns.Add()
        .Encoded(false)
        .Sanitized(false)
        .SetWidth(10)
        .RenderValueAs(o => Html.CheckBox("checked", o.YourModelBoolProperty));
祝你好运。

答案 2 :(得分:0)

columns.Add().Titled("").Encoded(false).Sanitized(false).RenderValueAs(o => Html.CheckBox(string.Format("ArrayProperty[{0}].Selected", Model.ArrayProperty.IndexOf(o)), o.Selected));

适合我 - 比其他答案更清洁。出于某种原因,我无法将其他项目发布到工作中