سلام
من سه جدول به نام
User
Role
UserRole
دارم که به هام ارتباط دارند و جدول userRole جدول واسط می باشد
در متدی این متد میخوام به جای اینکه همه ی کاربران رو لود کنم در dropdown میخوام فقط اون کاربرایی که نقش کاربر عادی دارند رو بیارم ممنون میشم راهنمایی کنید
public List<SelectListItem> GetEducatorForManageCourse()
{
return _context.Users.Select(d => new SelectListItem()
{
Text = d.UserName,
Value = d.UserId.ToString()
}).ToList();
}
سلام دوست من
لطفا بیشتر توضیح بدین که چه کار می خواهین انجام بدین؟
اگر منظور کاربرهایی که نقش عادی دارند رو می خواهین، در جدول UserRole بیایید مقادیری رو بفرستین
مثلا اگر مقدار UserRole برابر با normal بود تشخیص بده که کاربر از نوع عادی هست
بعد با این روش می تونین مقادیری که می خواهین رو بیرون بکشین
موفق باشین :)
جدول User:
public class User
{
[Key]
public int UserId { get; set; }
[DisplayName("نام کاربری")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید.")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد.")]
public string UserName { get; set; }
[DisplayName("ایمیل")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید.")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد.")]
[EmailAddress(ErrorMessage = "ایمیل وارد شده معتبر نمی باشد.")]
public string Email { get; set; }
[DisplayName("کلمه عبور")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید.")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد.")]
public string Password { get; set; }
[DisplayName("کد فعال سازی")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد.")]
public string ActiveCode { get; set; }
[DisplayName("وضعیت")]
public bool IsActive { get; set; }
[DisplayName("آواتار")]
[MaxLength(400, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد.")]
public string UserAvatar { get; set; }
[DisplayName("تاریخ ثبت نام")]
public DateTime RegisterDate { get; set; }
public bool IsDelete { get; set; }
#region Relation
public virtual List<UserRole> UserRoles { get; set; }
public virtual List<Wallet.Wallet> Wallets { get; set; }
public virtual List<Course.Course> Courses { get; set; }
//public virtual List<Article.Article> Articles { get; set; }
//public virtual List<Order.Order> Orders { get; set; }
//public virtual List<UserCourse> UserCourses { get; set; }
//public List<UserDisCountCode> UserDisCountCodes { get; set; }
public virtual List<CourseComment> CourseComments { get; set; }
#endregion
}
جدول Role:
public class Role
{
[Key]
public int RoleId { get; set; }
[DisplayName("عنوان نقش")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید.")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد.")]
public string RoleTitle { get; set; }
[Display(Name = "نام نقش")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد.")]
public string RoleName { get; set; }
public bool IsDelete { get; set; }
#region Relation
public virtual List<UserRole>UserRoles { get; set; }
public List<RolePermission>RolePermissions { get; set; }
#endregion
}
جدول واسط UserRole:
public class UserRole
{
[Key]
public int UR_Id { get; set; }
public int UserId { get; set; }
public int RoleId { get; set; }
#region Relation
public virtual UncoLearn.Data.Entities.User.User User { get; set; }
public virtual Role Role { get; set; }
#endregion
متدی برای گرفتن userهایی که فقط نقش خاصی دارند:دراین قسمت تمام userها لود میشه و من نمیخوام همه لود شه.
List<SelectListItem> GetEducatorForManageCourse();
public List<SelectListItem> GetEducatorForManageCourse()
{
return _context.Users.Select(d => new SelectListItem()
{
Text = d.UserName,
Value = d.UserId.ToString()
}).ToList();
}
گرفتن userها و ارسال به DropDownList:
var educator = _courseService.GetEducatorForManageCourse();
ViewData["educator"] = new SelectList(educator, "Value", "Text");
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)