【发布时间】:2012-05-02 23:48:10
【问题描述】:
我有一个管理员站点供管理员创建用户。在这里,他必须为用户选择角色——比如 Asp.NET 配置站点。我做了 3 个不同角色的复选框。
[Authorize(Roles = "Admin")]
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
var Rolemodel = model.RolesContainer;
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
[Authorize(Roles = "Admin")]
public ActionResult Register()
{
List<SelectListItem> tempRoles = new List<SelectListItem>();
tempRoles.Add(new SelectListItem{ Text = "Admin", Selected = false, Value = "Admin" });
tempRoles.Add(new SelectListItem{ Text = "Production", Selected = false, Value = "Production"});
tempRoles.Add(new SelectListItem{ Text = "Sale", Selected = false, Value = "Sale"});
return View(new RegisterModel { RolesContainer = tempRoles });
}
----查看--------
@{ foreach (var item in Model.RolesContainer)
{
@Html.DisplayFor(m => item.Text)
@Html.CheckBoxFor(m => item.Selected)
}
}
当我检查它们并提交时,我在Register 操作中到达断点,但此时RolesContainer 为空 - 谁能告诉我这是为什么?
【问题讨论】:
-
你能显示你的httpost方法的签名吗?我认为您可能期望一个与您传递到视图中的模型不同类型的参数。
-
我现在更新了代码,关键是当我到达: if (ModelState.IsValid) { var Rolemodel = model.RolesContainer; } RolesContainer 为空,不包含所选值
标签: asp.net-mvc-3 role