2016-09-26 14 views
-1

ドロップダウンリストコントロールから新しい値を選択すると、モデルが更新されないのはなぜですか?ここでC#MVCドロップダウンリストが更新されていませんモデル

は私のモデルは、私はコードを強化しているとコレクションでコレクションにUserRolesを見ることができます

public class UserViewModel 
{ 
    public Users users { get; set; }     
    public IEnumerable<SelectListItem> UserRoles { get; set; }     
} 

コントローラ

//GET 
public ActionResult Edit(int id) 
{ 
     var vm = new UserViewModel(); 
     vm.users = repository.GetById(id); 

     vm.UserRoles = db.UserRoles.Select(
          x => new SelectListItem 
          { 
           Selected = true, 
           Text = x.UserRoleName, 
           Value = x.UserRoleID.ToString() 
          } 
      ); 

     if (vm == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(vm); 
    } 


[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Edit(UserViewModel model) 
{ 
     if(ModelState.IsValid) 
     { 
      db.Entry(model).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View();  
} 

そして最後に、私の見る

<div class="form-group"> 
<label class="control-label col-md-2">User Role</label> 
<div class="col-md-10"> 
     @Html.HiddenFor(model => model.users.UserRoleID) 
     @Html.DropDownListFor(model => model.UserRoles, (IList<SelectListItem>)ViewBag.UserRoles, "-- Select One --", new { @class = "form-control" })     
    </div> 
</div> 

です値を正しく渡しているかどうかはわかりません。私はモデル

public ActionResult Edit(int id, UserViewModel model) 
{ 
     var user = repository.GetById(id); 
     if (ModelState.IsValid) 
     { 
      if (user != null) 
      { 
       user.Username = model.users.Username; 
       user.Forename = model.users.Forename; 
       user.Lastname = model.users.Lastname; 
       user.Email = model.users.Email; 
       user.Status = model.users.Status; 
       user.UserRoleID = Convert.ToInt32(model.UserRoles); 

       db.Entry(user).State = EntityState.Modified; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       return View(); 
      }     
     } 
     return View();   
    } 

を更新するための私のPOST方法を更新しました

UPDATE

は、しかし上の以下に示すように、それは私のドロップダウンリストにNull reference例外を与えている送信しますか?今なぜ?

Null reference exception

+0

嘘をコメントしよう '= true'をを選択するかを設定し'あなたは、複雑なOBJECに ''