Laden...

Wie bestimmen, welches Property von anderer Klasse (Nav. Property) im UI angezeigt werden soll?

Letzter Beitrag vor 6 Jahren 2 Posts 944 Views
Wie bestimmen, welches Property von anderer Klasse (Nav. Property) im UI angezeigt werden soll?

Hallo,

Wisst ihr ob es ein Attribut gibt, bei welchem ich setzen kann, welches Element von einer über ein Navigation Property verbunden Klasse in einer ASP.NET MVC Razor View angezeigt werden soll?

Ich habe folgende Klassen:


    public class Employee
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid EmployeeID { get; set; }
        public string Firstname { get; set; }
        public string Lastname { get; set; }
        public string Street { get; set; }
        public string Zip { get; set; }
        public string City { get; set; }
        public string EmployeeCode { get; set; }
        public double Salary { get; set; }
        public string EMail { get; set; }
        public string Phone1 { get; set; }
        public string Phone2 { get; set; }

        //Foreign Keys
        public Guid? RoleID { get; set; }
        public Guid? TeamID { get; set; }

        // Navigation Properties
        public virtual Role Role { get; set; }
        public virtual Team Team { get; set; }
    }


    public class Team
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid TeamID { get; set; }
        public string Teamname { get; set; }
        public string Location { get; set; }

        public virtual Employee TeamLeader { get; set; }
        public virtual ICollection<Employee> TeamMembers { get; set; }
    }


    public class Role
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid RoleID { get; set; }
        public string Rolename { get; set; }
    }

In der automatisch generierten View, wird für die Role eine Dropdownbox angezeigt wo ich aus allen in der Datenbank hinterlegten Rollen auswählen kann. Der Value der Dropdown ist das Rolename Propertie.

Bei Team bekomme ich jedoch nur eine Textbox mit der TeamID.

Was übersehe ich hier?

Ich hoffe ihr könnt mir weiterhelfen.

In erster Linie hat das nichts mit ASP.NET zutun; daher in die Datenbank-Sektion verschoben.

Zweitens gibt es auch in ASP.NET eine Schichtentrennung:
[Artikel] Drei-Schichten-Architektur
Ja, ich weiß, dass die Beispiele in ASP.NET sehr einfach sind und von der UI direkt auf die DB zugegriffen wird; aber es sind auch nur Beispiele.

Und natürlich gibt es kein Attribut, das die Datenbank-Logik an die UI bindet.
Eine Datenbank-Schicht darf niemals eine Referenz auf die Business Logik haben, oder gar eine Referenz zur verwendeten UI-Technologie.

Ich bin allgemein kein großer Fan der EF-Beispiele sowie vieler ASP.NET Beispiele.
Sie sind an einigen Stellen einfach aus Architektur-Sicht falsch und die Gefahr ist groß, dass die Leute das ohne überlegen übernehmen.