2014-09-01 82 views
1

您好我已经在asp.net中包含Grid.MVC 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) 

回答

0

将值属性添加到复选框,将它们的值设置为news.Id(if news.Id是主键还是唯一的,可以设置一些值,通过这些值您将能够识别控制器中检查的行)。 将名称属性添加到复选框并为其全部赋予相同的名称。

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

使用的控制器形式保藏对象的动作来获取CheckBox值

public void Controls(FormCollection form) 

您将获得只在其中的FormCollection检查这些值。

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

对不起,对于迟到的答复,但今天我发现我的自我与同样的问题。

下面的代码将工作,只要你想:

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

好运。

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

适用于我 - 并且比其他答案稍微干净一些。由于某种原因,我无法将其他项目发布到工作区