0
我遇到的問題是,儘管AssignedUsers屬性在我的構造函數中初始化(在離開GET編輯之前),但它在POST Edit操作中返回爲空值,提交後表格。所有其他屬性保持其狀態。提交POST後MVC4模型的綁定屬性丟失
除了在ModelState.IsValid檢查後(並在返回視圖之前)重新初始化屬性之外,是否還有其他方法可以通過此檢查?
型號:
public class GroupModel {
public List<int> AssignedUserIds { get; set; }
public MultiSelectList AssignedUsers { get; set; }
public GroupModel(Groups group) {
var allUserGroups = AccountManagementAdapter.GetUserGroups();
AssignedUsers = new MultiSelectList(
allUserGroups
.Where(userGroup => userGroup.GroupId == Id)
.Select(userGroup => userGroup.Users)
.ToList(),
"Id",
"Username");
AssignedUserIds = allUserGroups
.Where(userGroup => userGroup.GroupId == Id)
.Select(userGroup => userGroup.UserId)
.ToList();
}
查看:
@using (Html.BeginForm()) {
@Html.ListBoxFor(group => group.AssignedUserIds, Model.AssignedUsers)
<input type="submit" value="Save"/>
}
控制器:
[HttpGet]
public ActionResult Edit(int id) {
GroupModel groupModel = new GroupModel(AccountManagementAdapter.GetGroups().FirstOrDefault(group => group.Id == id));
return View(groupModel);
}
[HttpPost]
public ActionResult Edit(GroupModel group) {
if (ModelState.IsValid) {
group = new GroupModel(AccountManagementAdapter.UpdateUsersForGroup(group.Id, group.AssignedUserIds));
ViewBag.Success = true;
}
return View(group);
}