多视图的一个视图?

时间:2013-07-27 15:07:11

标签: asp.net-mvc-4 entity-framework-5

如果您需要从各种实体(模型)创建一个View,最好是创建一个单独的类作为ViewModel,其中包含您需要的特定属性,或者更好地创建具有特定属性的另一个实体并将其关联与ORM设计者中其他实体的实体?

1 个答案:

答案 0 :(得分:1)

您可以将任意数量的模型合并到一个模型中,方法是将它们声明为主模型的属性。假设您有以下模型:

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int SchoolID { get; set; }

    public virtual School StudentSchool { get; set; }
}

public class School
{
    public School()
    {
        this.Students = new HashSet<Student>();            
    }

    public int SchoolID { get; set; }
    public string ASchoolName { get; set; }

    public virtual ICollection<Student> Students { get; set; }        
}

如果您只是将Student类设置为视图模型,则可以检索学生的School,在这种情况下,您无需执行任何操作。

但是,我们假设您还需要视图中的所有学校和所有学生作为您的视图模型。为此,请创建另一个类并将上述类添加为其属性:

public class MyModel
{
    List<Student> MyStudents { get; set; }
    List<School> MySchools { get; set; }
}

您可以通过此方法创建所需的任何复杂模型......