Отображение списка разрешений меню из таблицы - замена RoleId и UserId на RoleName и UserName в Entity Framework - PullRequest
0 голосов
/ 31 января 2020

У меня есть меню, которое заполняет базы по имени пользователя или ролям. Я хотел бы создать таблицу списка записей SQL. Стандартный foreach, используя ViewModel, который я сгенерировал. Я думаю, что это может быть упрощено, и, возможно, некоторые элементы добавлены в 'ViewModel' для достижения этой цели, но я не понимаю это правильно.

Ниже представлена ​​модель View, в db.MenuPermissions есть ForeinKeys: RoleId - AspNetRoles (Id) UserId - AspnetUsers (Id)

public class MenuPermissionView
{
    [Key]
    public Guid Id { get; set; }
    public string MenuId { get; set; }
    public virtual Menu Menu_MenuId { get; set; }
    [Required]
    [DisplayName("Role")]
    public string RoleId { get; set; }
    [DisplayName("User")]
    public string UserId { get; set; }
    [DisplayName("Sort Order")]
    public int? SortOrder { get; set; }
    [Required]
    [DisplayName("Is For Nav Bar")]
    public bool IsForNavBar { get; set; }
    [Required]
    [DisplayName("Is Add")]
    public bool IsAdd { get; set; }
    [Required]
    [DisplayName("Is Create")]
    public bool IsCreate { get; set; }
    [Required]
    [DisplayName("Is Read")]
    public bool IsRead { get; set; }
    [Required]
    [DisplayName("Is Update")]
    public bool IsUpdate { get; set; }
    [Required]
    [DisplayName("Is Delete")]
    public bool IsDelete { get; set; }
}

Вот контроллер (не полный), который я чувствую это может быть чище, и это явно не работает так, как есть. Я пытался добавить идентичность для ролей и пользователей, но это не помогло. Я также хотел бы, чтобы он просто возвращал список, а не staticPagedList со значениями, я буду использовать dataTables, которые позаботятся об этом.

        public ActionResult Index()
    {
        List<MenuPermissionView> col_Mem = new List<MenuPermissionView>();

        var role = RoleManager.Roles
            .ToList();
        var user = UserManager.Users
            .ToList();
        var result = 

        foreach (var item in result)
        {
            MenuPermissionView objRoles = new MenuPermissionView();

            objRoles.Menu_MenuId = item.Menu_menuId;
            objRoles.RoleId = item.Name;
            objRoles.UserId = item.Users;
            objRoles.IsForNavBar = item.IsForNavbar;
            objRoles.IsAdd = item.IsAdd;
            objRoles.IsCreate = item.IsCreate;
            objRoles.IsDelete = item.IsDelete;
            objRoles.IsRead = item.IsRead;
            objRoles.IsUpdate = item.IsUpdate;

            col_Mem.Add(objRoles);
        }

        return View(col_Mem.ToPagedList(5, 25));

        //return View(db.MenuPermissions.ToList());
    }

Я мог бы достичь этого, если бы использовал только те таблицы, для которых у меня есть модели, однако у этих таблиц не было моделей, потому что они являются частью идентификационных данных Entity Frameworks.

Спасибо за помощь!

1 Ответ

0 голосов
/ 02 февраля 2020

я думаю, что проблема в том, что вы проповедуете элемент, который вы только что создали
, вы можете получить результат из базы данных и пропустить результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...