循环遍历角色并获取角色 MVC 6 首字母的控制器代码
Controller Code to Loop Through Roles and Get First Letter of Role MVC 6
这是我的 UserViewModel:
public class UserViewModel
{
public string UserId { get; set; }
public string Email { get; set; }
public string Roles { get; set; }
}
"Roles=RolePrefixes(u.Id)" 行是红色的。我已经尝试了一切来简单地调用 darn 函数。
在我的控制器中,如何调用 RolePrefixes(string id) 函数?我说"function"因为我不知道该说什么。
private List<UserViewModel> GetUsers()
{
var UserManager = _serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var RoleManager = _serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var allRoles = RoleManager.Roles.ToList();
//var user = UserManager.FindByIdAsync(userID);
//var usersRoles = UserManager.GetRolesAsync(user);
return context.Users.Select(u => new UserViewModel
{
Email = u.Email,
UserId = u.Id,
// THIS WORKS FOR Role Ids but not their Names::: Roles = String.Join("/", u.Roles.Select(r => r.RoleId.First()))
Roles = RolePrefixes(u.Id) //THIS IS UNDERLINED IN RED.
}).ToList();
}
public async Task<string> RolePrefixes(string id)
{
var UserManager = _serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
//var RoleManager = _serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
//var allRoles = RoleManager.Roles.ToList();
var user = await UserManager.FindByIdAsync(id);
var usersRoles = await UserManager.GetRolesAsync(user);
string strPrefixes = "";
foreach (var item in usersRoles)
{
strPrefixes += item + "/";
}
return strPrefixes;
}
投射角色名称,select 字符串中的第一个字符,并将它们连接在一起。
return context.Users.Select(u => new UserViewModel
{
Email = u.Email,
UserId = u.Id,
Roles = String.Join("/", context.Roles.Where(r => r.Users.Any(u2 => u2.UserId == u.Id)).Select(r => r.Name.First()))
}).ToList();
这是我的 UserViewModel:
public class UserViewModel
{
public string UserId { get; set; }
public string Email { get; set; }
public string Roles { get; set; }
}
"Roles=RolePrefixes(u.Id)" 行是红色的。我已经尝试了一切来简单地调用 darn 函数。 在我的控制器中,如何调用 RolePrefixes(string id) 函数?我说"function"因为我不知道该说什么。
private List<UserViewModel> GetUsers()
{
var UserManager = _serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var RoleManager = _serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var allRoles = RoleManager.Roles.ToList();
//var user = UserManager.FindByIdAsync(userID);
//var usersRoles = UserManager.GetRolesAsync(user);
return context.Users.Select(u => new UserViewModel
{
Email = u.Email,
UserId = u.Id,
// THIS WORKS FOR Role Ids but not their Names::: Roles = String.Join("/", u.Roles.Select(r => r.RoleId.First()))
Roles = RolePrefixes(u.Id) //THIS IS UNDERLINED IN RED.
}).ToList();
}
public async Task<string> RolePrefixes(string id)
{
var UserManager = _serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
//var RoleManager = _serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
//var allRoles = RoleManager.Roles.ToList();
var user = await UserManager.FindByIdAsync(id);
var usersRoles = await UserManager.GetRolesAsync(user);
string strPrefixes = "";
foreach (var item in usersRoles)
{
strPrefixes += item + "/";
}
return strPrefixes;
}
投射角色名称,select 字符串中的第一个字符,并将它们连接在一起。
return context.Users.Select(u => new UserViewModel
{
Email = u.Email,
UserId = u.Id,
Roles = String.Join("/", context.Roles.Where(r => r.Users.Any(u2 => u2.UserId == u.Id)).Select(r => r.Name.First()))
}).ToList();