我想向我的_edituser视图显示用户配置文件,然后编辑用户配置文件,例如用户角色。名称和电子邮件。
但是,当涉及用户角色时,它正在崩溃。我得到500(内部服务器错误)它在这里崩溃:
model.ApplicationRoleId = RoleManager.Roles.Single(r => r.Name == UserManager.GetRoles(id).Single()).Id;
这是我的edituserview
public class EditUserViewModel
{
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public List<SelectListItem> ApplicationRoles { get; set; }
public string ApplicationRoleId { get; set; }
}
这是我的编辑器操作
[HttpGet]
public async Task<IActionResult> EditUser(string id)
{
EditUserViewModel model = new EditUserViewModel();
model.ApplicationRoles = roleManager.Roles.Select(r => new SelectListItem
{
Text = r.Name,
Value = r.Id
}).ToList();
if (!String.IsNullOrEmpty(id))
{
ApplicationUser user = await userManager.FindByIdAsync(id);
if (user != null)
{
model.Name = user.Name;
model.Email = user.Email;
model.ApplicationRoleId = RoleManager.Roles.Single(r => r.Name == UserManager.GetRoles(id).Single()).Id; // Here crashing .. I don't know why.. Server 500 error
ViewBag.RoleId = new SelectList(RoleManager.Roles, "Id", "Name", model.ApplicationRoleId);
}
}
return PartialView("_EditUser", model);
}
在我的查看页面" _edituser.cshtml"我的用户角色下拉列表看起来像
<div class="form-group">
@Html.Label("Role", htmlAttributes: new { @class = "control-label col-md-6" })
<div class="col-md-12" >
@Html.DropDownList("RoleId", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ApplicationRoles, "", new { @class = "text-danger" })
</div>
</div>
/谢谢你
我确实喜欢@shyju在我的旧问题中写的那样
var role = await UserManager.GetRolesAsync(user.Id);
var existingRole = role.First();
if (existingRole != null)
{
string existingRoleId = RoleManager.Roles.Single(r => r.Name == existingRole).Id;
model.ApplicationRoleId = existingRoleId;
..... and so on ....
}
谢谢你们和@shyju