【发布时间】:2015-01-08 04:22:07
【问题描述】:
我在视图中使用了这个模型:
using (var db = new FieldSaverContext())
{
AspNetUser user = (from p in db.AspNetUsers
where p.Id == id
select p).Include(m => m.AspNetRoles) .First();
model.AUser = user;
List<AspNetRole> roles = (from r in db.AspNetRoles
select r).ToList();
model.RoleList = roles;
List<ListID> ids = (from l in db.ListIDs
select l).ToList();
model.ListIDList = ids;
List<ViewerList> viewerLists = (from v in db.ViewerList
select v).ToList();
model.ViewerList = viewerLists;
}
这就是我的视图:
@using (Html.BeginForm("Edit", "Users"))
{
<div class="container containerEdit">
<div class="col-md-9">
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(m => m.AUser.Id)
<label>@Html.DisplayFor(m => m.AUser.Id)</label>
</div>
<div class="form-group">
@Html.DisplayFor(m => m.AUser.FirstName)
@Html.TextBoxFor(m => m.AUser.FirstName)
</div>
<div class="form-group">
@Html.LabelFor(m => m.AUser.PhoneNumber)
@Html.TextBoxFor(m => m.AUser.PhoneNumber)
</div>
<div class="form-group">
@Html.LabelFor(m => m.ListIDList)
@Html.DropDownListFor(n => n.ListIDList, new SelectList(Model.ListIDList, "ID", "Value"))
</div>
<div class="form-group">
@Html.LabelFor(m => m.AUser.Note1)
@Html.TextBoxFor(m => m.AUser.Note1)
</div>
<div class="form-group">
@Html.LabelFor(m => m.AUser.Note2)
@Html.TextBoxFor(m => m.AUser.Note2)
</div>
</div>
<div class="col-md-6">
<div class="form-group"> </div>
<div class="form-group">
@Html.LabelFor(m => m.AUser.LastName)
@Html.TextBoxFor(m => m.AUser.LastName)
</div>
<div class="form-group">
@Html.LabelFor(m => m.AUser.Email)
@Html.TextBoxFor(m => m.AUser.Email)
</div>
<div class="form-group">
<label>Report Viewer</label>
@Html.DropDownListFor(v => v.AUser.ViewerId, new SelectList(Model.ViewerList, "ID", "Value"))
</div>
</div>
@Html.HiddenFor(v => v.AUser.Id)
</div>
<div class="col-md-3">
@foreach (AspNetRole role in Model.RoleList)
{ @Html.CheckBox(role.Name, Model.AUser.AspNetRoles.Any(userRole => userRole.Id == role.Id)) @Html.Label(role.Name)<br /> }
</div>
</div>
<div class="col-md-8">
<input type="submit" class="btn btn-success btn-lg btnSaveEdit" value="Save" />
</div>
}
当回发发生时,我能够获取 AUser 的值,但我没有获取复选框中使用的 Model.RoleList 的任何值。 我想检查从 RoleList 中选中了哪些复选框并将这些角色分配给用户。
我错过了什么?
更新
编辑操作:
[HttpGet]
public ActionResult Edit(int? id)
{
ManageViewModel model = new ManageViewModel();
using (var db = new DbContext())
{
AspNetUser user = (from p in db.AspNetUsers
where p.Id == id
select p).Include(m => m.AspNetRoles) .First();
model.AUser = user;
List<AspNetRole> roles = (from r in db.AspNetRoles
select r).ToList();
model.RoleList = roles;
List<ListID> ids = (from l in db.ListIDs
select l).ToList();
model.ListIDList = ids;
List<ViewerList> viewerLists = (from v in db.ViewerList
select v).ToList();
model.ViewerList = viewerLists;
}
return View(model);
}
[HttpPost]
public ActionResult Edit(ManageViewModel model)
{
AspNetUser user = model.AUser;
using (var db = new DbContext())
{
AspNetUser dbUser = (from u in db.AspNetUsers
where u.Id == model.AUser.Id
select u).First();
dbUser.FirstName = model.AUser.FirstName;
dbUser.LastName = model.AUser.LastName;
dbUser.Email = model.AUser.Email;
dbUser.PhoneNumber = model.AUser.PhoneNumber;
dbUser.Note1 = model.AUser.Note1;
dbUser.Note2 = model.AUser.Note2;
dbUser.ViewerId = model.AUser.ViewerId;
db.SaveChanges();
}
return View();
}
【问题讨论】:
-
您是否检查过
model.RoleList实际上不为空? -
@Groyoh 不是空的gyazo.com/49be65623d5c76e5f71f085968b31ae9
-
好的,你说的“我没有得到 Model.RoleList 的任何值”到底是什么意思?是没有生成标记还是复选框值不正确?
-
当我单击提交按钮时,在控制器中我无法获取 Model.RoleList 的值,它的值为 null @Groyoh。
-
哦,我想我明白了。您能否编辑您的问题以显示
Edit操作?一旦我有了它,我会发布一个可能会解决您的问题的答案。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5