gpt4 book ai didi

c# - 为什么角色即使存在于数据库中也显示为 "not exist"(asp.net mvc)

转载 作者:行者123 更新时间:2023-11-30 20:21:50 25 4
gpt4 key购买 nike

我在注册用户时尝试将用户添加到角色,所以我在 migrations.cs 类中使用以下代码为角色播种并更新了数据库

        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));
}
}

我试图将角色名称提取到我的帐户 Controller 类中的下拉列表中

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);
}

然而此时调试器显示错误

UserManager.AddToRole(user.Id, model.Roleid); Role bec759ac-55ca-40f0-a8b8-00de314dd2b3 does not exist.

但是这个角色存在于数据库中,所以我对问题出在哪里感到困惑 enter image description here

最佳答案

第二个参数是字符串角色,如"Reviewer" 不是角色的id。它出错了,因为实际上没有 Name 等于该 GUID 的角色。

参见:https://msdn.microsoft.com/en-us/library/dn497483(v=vs.108).aspx

关于c# - 为什么角色即使存在于数据库中也显示为 "not exist"(asp.net mvc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com