C# 为什么一个角色显示为;“不存在”;即使存在于数据库中(asp.net mvc)
我试图在注册用户时将用户添加到角色中,因此我在migrations.cs类中为角色添加种子并使用下面的代码更新数据库C# 为什么一个角色显示为;“不存在”;即使存在于数据库中(asp.net mvc),c#,asp.net-mvc,asp.net-identity,C#,Asp.net Mvc,Asp.net Identity,我试图在注册用户时将用户添加到角色中,因此我在migrations.cs类中为角色添加种子并使用下面的代码更新数据库 var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context)); string[] roleNames = { "Admin", "Reviewer", "User" }; IdentityResult
var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
string[] roleNames = { "Admin", "Reviewer", "User" };
IdentityResult roleResult;
foreach (var roleName in roleNames)
{
if (!RoleManager.RoleExists(roleName))
{
roleResult = RoleManager.Create(new IdentityRole(roleName));
}
}
var角色管理器=新角色管理器(新角色存储(上下文));
字符串[]角色名称={“管理员”、“审阅者”、“用户”};
识别结果角色结果;
foreach(roleName中的变量roleName)
{
如果(!RoleManager.RoleExists(roleName))
{
roleResult=RoleManager.Create(新的IdentityRole(roleName));
}
}
我试图在accountcontroller类中将角色名称提取到dropdownlist中
public ActionResult Register()
{
var model = new RegisterViewModel();
model.RolesList = new SelectList(_db.Roles, "Id", "Name");
return View(model);
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser()
{
UserName = model.UserName,
PortalUser = new PortalUser()
{
Email = model.Email,
UserName = model.UserName
}
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
UserManager.AddToRole(user.Id, model.Roleid);
return RedirectToAction("Index", "ApplicationReview");
}
else
{
AddErrors(result);
}
}
model.RolesList = new SelectList(_db.Roles, "Id", "Name");
// If we got this far, something failed, redisplay form
return View(model);
}
public ActionResult寄存器()
{
var model=new RegisterViewModel();
model.RolesList=新选择列表(_db.Roles,“Id”,“Name”);
返回视图(模型);
}
//
//职位:/Account/Register
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务第二个参数是字符串角色,如中的“Reviewer”
中所示,而不是角色的id。它出错了,因为实际上没有一个角色的Name
等于该GUID
请参阅:您确定正在查找正确的数据库吗?@ragerory我确定,因为用户信息正确保存在dbo.AspNetUsers中table@ibnhamza我有同样的问题,但我不能用@ChrisPratt-answer解决它。我的代码和你的代码的区别在于,我已经在Startup.cs
file.Omg!!这是一个严重的疏忽。谢谢你指出没问题。从逻辑上讲,您应该能够按照自己的方式来完成任务,但Microsoft对待身份角色的方式与对待其他类型角色的方式大不相同。我认为这主要是为了向后兼容,或者至少是为那些在ASP.NET中使用auth之前的迭代的人提供一个熟悉的API。