У меня есть меню, которое заполняет базы по имени пользователя или ролям. Я хотел бы создать таблицу списка записей 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.
Спасибо за помощь!