2017-03-28 44 views
0

我有一個類如何綁定複選框動態列表類型的模型MVC 5

public class CustomBenefitCommittee 
    { 
     public int PlanOptionId { get; set; } 
     public bool IsChecked { get; set; } 
     public string PlanOptionName { get; set; } 
    } 

,我已經把這個類作爲一個列表類型的模型在我的Razer視圖

@model List<MIHR.Business.CustomClasses.CustomBenefitCommittee> 
@{ 
    int Counter = 0; 
} 

<table class="table table-bordered" id="tblPlanLst"> 
     <thead> 
      <tr> 
       <th> 
        select 
       </th> 
       <th> 
        Benefit Option 
       </th> 

      </tr> 
     </thead> 

     <tbody> 

      @foreach (var Enrol in Model) 
      { 
       <tr> 
        <td> <input type="checkbox" name="customBenefitCommittee[@Counter].IsChecked" class="clsCheck" /></td> 
        <td> 
         @Enrol.PlanOptionName 
        </td> 

       </tr> 
         Counter++; 
      } 

     </tbody> 
    </table> 
<input type="submit" id="btnSubmitSave" value="Save" name="buttonType" class="btn btn btn-primary"> 

現在時我發佈這個表單到控制器與檢查複選框,我總是在這個複選框IsChecked屬性中爲false。 任何人都可以幫我解決它。

+0

我再次有更新我的回答,請檢查它爲你工作或不 –

+0

您的複選框沒有一個'value'。使用'@for(int i = 0; i m [i] .IsChecked)}' - 正確地生成你的html。 .NET DataTable](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943) –

回答

1

你也可以用這種方式:

@{ 
    var IsChecked = ""; 
    if (Enrol.IsChecked == true) 
    { 
     IsChecked = "checked='checked'"; 
    } 
} 
<input type="checkbox" name="customBenefitCommittee[@Counter].IsChecked" @IsChecked value="true" /> 

在此你true如果複選框被選中,並null而複選框是選中

public class CustomBenefitCommittee 
    { 
     public int PlanOptionId { get; set; } 
     public bool? IsChecked { get; set; } 
     public string PlanOptionName { get; set; } 
    } 

或者你也可以用這種方式:

@Html.CheckBox("customBenefitCommittee[" + Counter + "].IsChecked", Enrol.IsChecked ?? false, new { @class = "clsCheck" }) 

或者你也可以用這種方式:

@Html.CheckBoxFor(model => model[@Counter].IsChecked)