2013-06-19 37 views
4

我已經強類型視圖,示出數據從回傳複選框強類型視圖

ViewModel 
    public class GoldSetnUsers 
    { 
    bool Public { get; set; } 
    public List<GSUsers> gsUsers { get; set; } 


     public GoldSetnUsers() 
     { 
      UsersContext _dbm = new UsersContext(); 
      this.gsUsers = _dbm.UserProfiles.Select(n => new GSUsers { UserName = n.UserName, isEditor = false, isReviewer = false }).ToList(); 
     } 

     public class GSUsers 
     { 
      public string UserName { get; set; } 
      public bool isEditor { get; set; } 
      public bool isReviewer { get; set; } 
     } 

    } 

控制器HTTPGET方法顯示該視圖

enter image description here

問題是,後回模型返回所有​​行復選框爲false。儘管如此,表格外的複選框Public也會返回正確的回傳值。

控制器回傳碼

[HttpPost] 
    public ActionResult Create(GoldSetnUsers newGS) 
    { 
     if (ModelState.IsValid) 
     { // newGS gets me value 

      } 

}

查看

@model mvc2db.Models.GoldSetnUsers 
@using BootstrapSupport; 
@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 


     @Html.BeginControlGroupFor(model=>model.Public) 
      @Html.LabelFor(model => model.Public,new {@class="control-label"}) 
     <div class="controls"> 
      @Html.EditorFor(model => model.Public,new {@class="input-xlarge"}) 
      @Html.ValidationMessageFor(model => model.Public,null,new{@class="help-inline"}) 
     </div> 
     <div class="controls"> 
      <table class="table"> 
    <thead> 
    <tr> 

     <th>Name</th> 
     <th>Reviewer</th> 
       <th>Editor</th> 

    </thead> 
    <tbody> 

@foreach (var item in Model.gsUsers) { 
    <tr> 

     <td> 
      @Html.DisplayFor(modelItem => item.UserName) 
     </td> 

     <td> 
      @Html.EditorFor(modelItem => item.isEditor) 
     </td> 

     <td> 
      @Html.EditorFor(modelItem => item.isReviewer) 
     </td> 



    </tr> 
} 
</tbody> 
</table></div> 
@Html.EndControlGroup() 

    <div class="form-actions"> 
      <button type="submit" class="btn btn-primary">Save changes</button> 
      <button class="btn">Cancel</button> 
      </div> 
    </fieldset> 
} 

回答

4

我猜,因爲你使用的是foreach循環的所有複選框都會有相同的ID生成的複選框。因此,將會有一個模棱兩可的問題,以便檢查哪些不是。 您可以嘗試給用戶名作爲複選框的ID。

+0

解決,謝謝。下面是代碼 @for(INT I = 0;我 ​​ @ Html.EditorFor(型號=> model.gsUsers [I] .isEditor)* @ ​​ @ Html.EditorFor(型號=> model.gsUsers [I] .isReviewer) } – user219628

+0

其他幫助文章/對這個問題 帖http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx http://stackoverflow.com/questions/16070291/select-all-tr-of-a- table-and-send-it-the-controller-using-checkbox-in-mvc-4?rq = 1 http://stackoverflow.com/questions/17037858/how-to-pass-ienumerable-list-到控制器的功能於MVC-包括-複選框狀態?RQ = 1 – user219628