드롭 다운 목록 컨트롤에서 새 값을 선택하면 모델이 업데이트되지 않는 이유는 무엇입니까? 여기 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
예외를주고 제출? 이제 왜?
거짓말 의견을 시도'= TRUE '를 선택하거나 설정할'당신은 복잡한 objec에'
선정 t ('UserRoles'은)입니다. 당신의 속성은 (public int SelectedUser {get; 세트; } 및'@Html.DropDownListFor (m => m.SelectedUser, Model.UserRoles, ...)'(보기 모델은 데이터 모델 인 속성을 포함하면 안 됨) –
그리고 SelectList를 모델 속성에 추가하면 'ViewBag'가 아닌) 그것을 사용하고'SelectListItem'의'Selected' 속성을 설정하지 마십시오 - 모델 속성에 바인딩 할 때 무시됩니다 (모델 바인딩의 전체 점이 속성에 바인딩되므로 해당 속성의 값은 어떤 것이 선택되는지를 결정하는 속성) –