我有一个MVC应用程序。这是我的代码的一部分:
查看型号:
public class StudentViewModel
{
public int Id { get; set; }
public int? DepartmentId { get; set; }
public string Name { get; set; }
public string Department { get; set; }
public IEnumerable<SelectListItem> AllDepartments { get; set; }
}
查看:
@Html.DropDownListFor(model => model.DepartmentId, Model.AllDepartments)
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(StudentViewModel studentViewModel)
{
用户在下拉列表中更改部门选择并提交后,由于某种原因,studentViewModel.DepartmentId包含旧的DepartmentId。 studentViewModel.Name确实包含新值。你能解释我错过的东西吗?
感谢。
答案 0 :(得分:2)
在评论中,您在下拉列表中添加了属性DepartmentId
的另一个控件。 DefaultModelBinder
按顺序读取所有表单值(加上路由值,查询字符串值等)。设置属性值后,将忽略同一属性的任何后续值。