【问题标题】:Display list of Menu Permissions from table - replacing RoleId and UserId with RoleName and UserName in Entity Framework显示表中的菜单权限列表 - 在实体框架中将 RoleId 和 UserId 替换为 RoleName 和 UserName
【发布时间】:2020-01-31 19:44:10
【问题描述】:

我有一个基于用户名或角色填充的菜单。我想生成一个 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());
    }

如果它只使用我有模型的表,我可以实现这一点,但是这些表没有模型,因为它们是实体框架身份的一部分。

感谢您的帮助!

【问题讨论】:

  • 我将朝着不同的方向发展,我正在使用 SQL 视图来显示我想要的内容。它似乎更容易实现。还将所有内容都更改为存储过程。如果有的话,我不会使用 linq。

标签: c# asp.net asp.net-mvc entity-framework asp.net-identity


【解决方案1】:

我认为问题在于您正在对刚刚创建的项目进行学习
您可以从数据库中获取结果并在结果上进行 foreach

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多