2016-04-26 158 views
1

我有一個模型:獲得價值

public class SectionModel 
{ 
    public int SectionId { get; set; } 
    public string Name { get; set; } 
    // used for checkbox 
    public bool IsChecked { get; set; } 
} 

返回它們的列表和設置在視圖複選框使用:

<div id="TestSections"> 
    @for (int i = 0; i < Model.Count; i++) 
    { 
     <div class="form-group"> 
     <label class="col-md-2 control-label"> 
      @Model[i].Name 
     </label> 
     <div class="md-checkbox-list col-md-10"> 
      <div> 
       @Html.CheckBoxFor(m => m[i].IsChecked, new { @SectionId = Model[i].SectionId }) 
      </div> 
     </div> 
     </div> 
    } 
    </div> 

這然後提交到行動方法:

public ActionResult ExamSection(List<SectionModel> model) 
{ 
    var checkedSections = model.FindAll(x => x.IsChecked); 
} 

checkedSections返回給我正確的數字,這是檢查,但我需要額外的附件ls,就像SectionId被檢查過一樣。有沒有辦法檢索它?當我檢查傳入的模型時,它只設置了IsChecked標誌,其他所有字段都爲空。

回答

3

你應該做的就是添加一個HiddenField的複選框象下面這樣:

 <div> 
      @Html.CheckBoxFor(m => m[i].IsChecked) 
      @Html.HiddenFor(m =>m[i].SectionId) 
     </div> 

然後當它發佈到了Controller你將同時具有IsChecked值和SectionId

1

表單只發布用戶可編輯的元素的值。我知道的唯一例外是一個隱藏的領域。這是一個輸入,所以也許這不是一個例外。

我會添加隱藏字段來存儲您缺少的值。

3

HiddenFor()SectionID(和/或名稱)相加。當它的帖子,該車型將擁有該字段的值:

@for (int i = 0; i < Model.Count; i++) 
    { 
    <div class="form-group"> 
     <div class="row"> 
      <label class="col-md-2 control-label"> 
       @Model[i].Name 
      </label> 
      <div class="md-checkbox-list col-md-10"> 
       <div> 
       @Html.HiddenFor(m => m[i].SectionId) 
       @Html.CheckBoxFor(m => m[i].IsChecked) 
       </div> 
      </div> 
     </div> 
    </div> 
    }