簡體   English   中英

如何在 asp.net mvc 一個視圖中顯示多個連接模型

[英]how to display multiple joined models at asp.net mvc one view

我有三個模型員工、權限和部門。 我讓 LINQ 在它們之間加入。

如何從三個連接模型中創建強類型視圖,以及如何將它們全部顯示在一個表中?

模型是這樣形成的。

員工

public class Employee : IdentityUser
{
    [Key]
    public override string Id { get => base.Id; set => base.Id = value; }

    public override string Email { get => base.Email; set => base.Email = value; }

    public string HomePhone { get; set; }

    public string OfficePhone { get; set; }

    public string EmpName { get; set; }

    public int? DivID { get; set; }
    [ForeignKey("DivID")]
    public Division division { get; set; }

}

允許

public class Permission
{
    [Key]
    public int PerID { get; set; }
    public string PermissionsList { get; set; }

    public string BlockList { get; set; }
    public int DivID { get; set; }

    public string EmpID { get; set; }
    public Employee employee { get; set; }

}

分配

public class Division 
{
    [Key]
    public int DivID { get; set; }
    public string DivName { get; set; }

    public List<Employee> employees { get; set; }
}

LINQ

var GetAll = from E in GetEmployeeList
    join P in GetpermissionList
    on E.Id equals P.EmpID
    join D in GetdivisionList
    on E.DivID equals D.DivID
    select new { Employees = E, Permissions = P, Divisions = D };

這就是 GetAll 從內部看的樣子

現在,問題又來了。
如何在一個視圖中的表格中顯示三個模型“GetAll”的組合? 但我還需要知道,在如此復雜的 model 的情況下,如何使我的視圖成為強類型?

例如,不是一個解決方案,我用它來使視圖強類型化,但這是錯誤的虛擬嘗試只是接近我的意思

@model IEnumerable<Employees, Permissions, Divisions>
// In the controller -----> return View(GetAll);

您只需創建一個新的 class(查看模型),它具有三個屬性,每個實體一個。 然后,將 linq 中的最后一行更改為 select new MyViewModel { Employee = E, Permission = P, Division = D }

您可以創建視圖 model class 等;

 public class ViewModel
        {
            public Employees Employees {get;set;}
            public Permissions Permissions { get; set; }
            public Divisions Divisions { get; set; }
        }

那么查詢應該是;

  var GetAll = from E in GetEmployeeList
                         join P in GetpermissionList
                         on E.Id equals P.EmpID
                         join D in GetdivisionList
                         on E.DivID equals D.DivID
                         select new ViewModel { Employees = E, Permissions = P, Divisions = D };

可以通過查看列表model來查看,

@model List<ViewModel > 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM