【发布时间】:2017-01-12 15:50:03
【问题描述】:
我正在尝试创建新用户并将他添加到所选角色。我想以同步方式进行,但总是在创建部分 ModelState 时堆叠。如果我在没有 ModelState 的情况下创建它,那么方法将堆叠在 adminresult 点,其中用户是使用 UserManager 创建的。将用户添加到所选角色似乎存在问题,但我不确定。我正在使用 Identity 2。是否可以创建用户同步方式或完全异步过程?
[HttpPost]
public ActionResult Create(User userViewModel, params string[] selectedRoles)
{
if (ModelState.IsValid)
{
var user = new User()
{
UserName = userViewModel.UserName,
Email = userViewModel.Email,
FirstName = userViewModel.FirstName,
LastName = userViewModel.LastName,
Password = userViewModel.Password
};
var adminresult = UserManager.Create(user, userViewModel.Password); // without using ModelState stack here
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
var userStore = new UserStore<User>(context);
var userManager = new UserManager<User>(userStore);
var result = userManager.AddToRoles(user.Id, selectedRoles);
if (adminresult.Succeeded)
{
if (selectedRoles != null)
{
if (!result.Succeeded)
{
ModelState.AddModelError("", result.Errors.First());
// gets all names of roles to list
ViewBag.RoleId = new SelectList(RoleManager.Roles.ToList(), "Name", "Name");
return View("_Create");
}
}
return RedirectToAction("UserWizardIndex");
}
return View("_Create");
}
【问题讨论】:
-
您收到的异常消息是什么
-
System.NullReferenceException' 发生在 App_Web_msvvxqen.dll 中当我尝试创建新用户并将他添加到角色时发生 - 当我尝试为项目创建用户时,可以有超过 1 个角色(使用不同的控制器和同步操作)我得到 ((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors 该用户的角色在创建时设置并且只有 1 个角色。
标签: asp.net-identity-2 asp.net-mvc-5