بدست آوردن تعداد کاربران یک نقش در Asp.net core identity
سلام و عرض ادب
دوستان ببخشید چجوری میشه تعداد کاربرایی که مثلا نقش admin یا user رو دارن تو ویو ایندکس نقش ها نشون ها داد.
مثلا جلوی نقش ادمین نشون بدیم 10 کاربر یا یوزر 100 کاربر
پاسخ هوش مصنوعی
برای بدست آوردن تعداد کاربران یک نقش خاص در ASP.NET Core Identity، می توانید از کد زیر استفاده کنید. فرض کنید شما یک کنترلر دارید که به داده های نقش ها دسترسی دارد و همچنین به وابستگی های UserManager و RoleManager دسترسی دارید.
ابتدا مطمین شوید که RoleManager و UserManager به کنترلر شما منتقل شده اند:
public class RolesController : Controller
{
private readonly RoleManager _roleManager;
private readonly UserManager _userManager;
public RolesController(RoleManager roleManager, UserManager userManager)
{
_roleManager = roleManager;
_userManager = userManager;
}
}
حال می توانید در متد ایندکس، تعداد کاربران هر نقش را به دست آورید و در View نمایش دهید:
public async Task Index()
{
var roles = _roleManager.Roles.ToList();
var roleUserCounts = new List();
foreach (var role in roles)
{
var usersInRole = await _userManager.GetUsersInRoleAsync(role.Name);
roleUserCounts.Add(new RoleUserCount
{
RoleName = role.Name,
UserCount = usersInRole.Count()
});
}
return View(roleUserCounts);
}
public class RoleUserCount
{
public string RoleName { get; set; }
public int UserCount { get; set; }
}
در اینجا ما یک کلاس به نام RoleUserCount تعریف کردیم که شامل نام نقش و تعداد کاربران است. سپس این اطلاعات را به View ارسال می کنیم.
در View خود، می توانید اطلاعات را به شکل زیر نمایش دهید:
@model List
نقش
تعداد کاربران
@foreach (var role in Model)
{
@role.RoleName
@role.UserCount
}
بدست آوردن تعداد کاربران هر نقش در Asp net Core Identity
ببینید در آیدنتیتی یه جدول به نام AspNetRoles هست که لیست نقش های شما توی این جدول نگهداری میشه. یه جدول هم که AspNetUserRoles هست که لیست کاربران به همراه نقش اون کاربر رو نگهداری میکنه. شما میتونه از ترکیب این دو جدول تعداد کاربران هر نقش رو بدست بیارید.
Select Count(*),UR.RoleId,R.Name
From AspNetUserRoles UR Join AspNetRoles R
on UR.RoleId = R.Id
Group By UR.RoleId,R.Name
خروجی کوئری بالا مشابه تصویر زیر هست :

در تصویر بالا می بینید که مثلا تعداد کاربران Student برابر با 5 نفر هست.
اگر بخواید از طریق دستورات انتیتی فریم ورک هم میتونید تعداد کاربران هر نقش رو نمایش بدید.
var result = (from ur in _cxt.UserRoles
join r in _cxt.Roles on ur.RoleId equals r.Id
group new { ur, r } by new { ur.RoleId } into grp
select new { name = grp.Key, count = grp.Count() }).ToList();
در مثال بالا _cxt همون DbContext شما هست. در متغیر result لیست همه نقش ها و تعداد کاربران اونها نمایش داده میشه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2