2015-04-21 81 views
0

我已經創建了一個ParentModel,因爲我想在這裏面使用兩個模型,以便我可以在MVC中使用相同的視圖。父模型有2個屬性一個來添加空

當我獲得初始加載數據時,父模型中定義的兩個屬性都正確填充。 但是,當我嘗試添加新數據時,我將第二個屬性視爲null。 這裏是我的代碼:

public class UserModel 
{ 
    public User User { get; set; }   
    public IEnumerable<RolesModel> rolesModel { get; set; } 
} 

[HttpPost] 
[ValidateAntiForgeryToken()] 
public ActionResult Add(UserModel userDetails) 
{ 
    try 
    { 
     if (ModelState.IsValid) 
     { 
      userDetails.User.FullName = userDetails.User.FirstName + " " + userDetails.User.MiddleName + " " + userDetails.User.LastName; 
      userDetails.User.CreatedDate = DateTime.Now; 
      _userService.Insert(userDetails.User); 
      _unitOfWorkAsync.SaveChanges(); 
      foreach (RolesModel rolesModel in userDetails.rolesModel) 
      { 
       // Here userdetails.rolesmodel is null 
      } 
     } 

查看:

@model Axp.Gcst.Gps.Web.Areas.Admin.Models.UserModel 
@using (Html.BeginForm("Add", "user", FormMethod.Post, new { @class = "form-horizontal" })) 
{ 
    @Html.AntiForgeryToken() 
    @Html.Partial("_UserDetails", Model) 
    @foreach (var itemRole in Model.rolesModel) 
    {       
     if (itemRole.Role.RoleGroupId == item.RoleGroupId) 
     { 
      <div class="col-md-12 col-sm-12 col-xs-12 panel_cell"> 
       @Html.CheckBoxFor(model => itemRole.isSelected, new { @class = "panel_checkbox" }) 
       @Html.DisplayFor(model => itemRole.Role.Name) 
      </div> 
      @Html.HiddenFor(model=>itemRole.Role.RoleId) 
     } 
    } 
} 

回答

1

當你回來後一列表返回到控制器,你應該使用一個循環:

@foreach (var itemRole in Model.rolesModel) 
{ 
    if (itemRole.Role.RoleGroupId == item.RoleGroupId) 
    { 

     @Html.CheckBoxFor(model => itemRole.isSelected, new { @class = "panel_checkbox" }) 
     @Html.DisplayFor(model => itemRole.Role.Name) 
     @Html.HiddenFor(model => itemRole.Role.RoleId) 
    } 
} 

使用for循環:

@for(int i =0; i< Model.rolesModel.Count; i++){ 
      @Html.CheckBoxFor(m => m.rolesModel[i].isSelected, new { @class = "panel_checkbox" }) 
      @Html.DisplayFor(m => m.rolesModel[i].Role.Name) 
      @Html.HiddenFor(m => m.rolesModel[i].Role.RoleId) 

} 

A s imilar回答這裏:https://stackoverflow.com/a/27926181/1910735

的MVC模型綁定請求輸入字段是在格式:

list[0].prop1 
list[0].prop2 
list[0].prop3 

list[1].prop1 
list[1].prop2 
list[1].prop3 
+0

Thanks.if(型號=> Model.rolesModel [I] .Role.RoleGroupId == tblTestList [ j] .RoleGroupId)thi sline給出錯誤「無法將lambda表達式轉換爲類型'bool',因爲它不是委託類型」 – user662285

+0

model =>模型應該是model => model.rolesModel –

+0

同樣的錯誤夥計.. – user662285

相關問題