我在identity中设置了这些角色,每个用户分配一个角色
00 - Super Admin
10 - Admin
20 - Staff Manager
30 - Staff
40 - User Manager
50 - User
目的是允许用户更改低于(不等于)自己的用户角色的其他用户的角色
所以如果我能从添加到当前用户的角色的Name
中获得前两个字符,例如30,那么可以应用于其他用户的角色选择将是>30
获取当前用户
的用户状态var currentUser = await _userManager.GetUserAsync(HttpContext.User);
var currentUserRole = await _userManager.GetRolesAsync(currentUser);
然后像下面这样得到所有的角色,用'WHERE'子句,或者在if语句后面,前两个字符>当前用户前两个字符
var allRoles = _roleManager.Roles.ToList();
有没有人知道这样做的方法,或者是否有更好的主意?
多谢编辑:
好了,我现在把它硬编码为视图中的SelectList
,选择角色> 30
,它正在工作
ViewBag.allRoles = _roleManager.Roles.Where(a => Convert.ToInt32(a.Name.Remove(2)) > 30).Select(a => new SelectListItem()
{
Value = a.Id.ToString(),
Text = a.Name.Remove(0, 5).ToString(),
}).ToList();
只需要将当前用户角色名称转换为字符串?
我已经整理好了
var currentUser = await _userManager.GetUserAsync(HttpContext.User);
var currentUserRole = await _userManager.GetRolesAsync(currentUser);
int currentUserRoleLevel = int.Parse(currentUserRole[0].Remove(2));
ViewBag.allRoles = _roleManager.Roles.Where(a => Convert.ToInt32(a.Name.Remove(2)) > currentUserRoleLevel).Select(a => new SelectListItem()
{
Value = a.Id.ToString(),
Text = a.Name.Remove(0, 5).ToString(),
}).ToList();
问题仍然存在,有没有更好的方法?