2014-09-01 86 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)); 

適用於我 - 並且比其他答案稍微乾淨一些。由於某種原因,我無法將其他項目發佈到工作區