2016-09-26 3 views
-1

드롭 다운 목록 컨트롤에서 새 값을 선택하면 모델이 업데이트되지 않는 이유는 무엇입니까? 여기 C# MVC DropDownList가 업데이트되지 않음 모델

내 모델

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();  
} 

내가 컬렉션에 UserRoles을 볼 수있는 코드를 통해 컬렉션에 밟은

<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> 

결국 내보기입니다 그러나 값을 올바르게 전달하는지 잘 모르겠습니다.

UPDATE는

나는 모델

를 업데이트 내 POST 방법을 업데이트 한
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();   
    } 

그러나에 아래와 같이 나에게 드롭 다운리스트에 Null reference 예외를주고 제출? 이제 왜?

Null reference exception

+0

거짓말 의견을 시도'= TRUE '를 선택하거나 설정할'당신은 복잡한 objec에'