【发布时间】: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