Я пытаюсь создать динамическое меню, которое использует роли Identity 2.0, чтобы определить, какие пункты меню должен видеть пользователь. Я очень новичок в C # и мне нужна помощь, пожалуйста!
Для того, что я делаю, я думаю о роли как о пункте меню, который пользователь может либо видеть, либо нет, в зависимости от назначенных им ролей. У меня есть два уровня пунктов меню - пункт родительского меню (например, «Отчеты» и пункты подменю (например, «Отчеты о заказах», «Отчеты о получении» и т. Д.).
Итак, мой класс ApplicationRole
выглядит так:
public string Description { get; set; }
public string MenuTitle {get;set;}
public string MenuIcon { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
public virtual ApplicationRole ParentRole { get; set; }
Я буду хранить роли только для пользователя, в котором ParentRole не равен нулю. Я хочу узнать, как получить этот список ролей для вошедшего в систему пользователя и отобразить меню.
Итак, логика будет примерно такой:
- Получите список всех пунктов меню (ролей), которые пользователь назначил им.
- Используя этот список, используйте
ParentRole
, чтобы получить отдельный список родительских ролей (верхний уровень меню). Используя эти 2 списка, заполните мою модель представления ниже:
public class NavigationViewModel { public int MenuId { get; set; } public string MenuName { get; set; } public string ControllerName { get; set; } public string ActionName { get; set; } public string MenuIcon { get; set; } public IEnumerable<NavigationViewModel> ChildMenuItems { get; set; } }
По сути, я создаю меню, в котором есть меню верхнего уровня и подменю.
Моя проблема в том, что я действительно не знаю, с чего начать с точки зрения запросов к базе данных. В идеале я хотел бы, чтобы запрос, который выполняет самостоятельное присоединение к таблице ролей, чтобы получить родительскую роль в том же запросе, однако я новичок в С# и Linq и не знаю, с чего начать.
Будем признательны любому совету.