「管理者」ロールのユーザーのみが新しいユーザーを作成できる登録ビューがあります。標準の VS2012 登録ビューを使用していますが、ドロップダウンを追加して、管理者が新しいユーザーが属するロールを選択できるようにしたいと考えています。
コントローラー Register(RegisterModel モデル) を使用してフォームがポストバックされると、選択したロールでドロップダウン リストを取得し、ここに入力する方法は次のとおりです。
Roles.AddUserToRole(model.UserName, XXXXXXXXXX);
意見:
<fieldset>
<legend>Registration Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
</li>
<li>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
</li>
<li>
@Html.LabelFor(m => m.ConfirmPassword)
@Html.PasswordFor(m => m.ConfirmPassword)
</li>
<li>
Type of user:
@Html.DropDownList("roleName")
</li>
</ol>
<input type="submit" value="Register" />
</fieldset>
コントローラ:
//
// POST: /Account/Register
[Authorize(Roles = "admin")]
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
// Add user to selected role
Roles.AddUserToRole(model.UserName, XXXXXXXXXX);
// Don't want to login the user - as "admin" is creating this user
// FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
//ViewBag.created = "yes";
return RedirectToAction("UserList","Account");
}
else
{
ModelState.AddModelError("", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
ありがとうございました、
マーク