如何使用ViewModel显示来自多个模型的值?

时间:2019-05-22 07:58:02

标签: c# asp.net-mvc viewmodel

我在View中需要一个表,其中包含来自ViewModel的数据,其中包含对两个模型的引用。 所以: 我有StudentModelClassModel和一个StudentClassViewModel

在控制器和视图中我应该怎么做才能正确显示学生和连接的班级模型的所有属性?随便吧。

这是我的模型(我先使用代码)

public class Class
{
    public int ClassId { get; set; }
    public string Name{ get; set; }   
    public ICollection<Student> Student { get; set; }
}
public class Student
{
    public int StudentId { get; set; }
    public string Name{ get; set; } 
    public Class Class { get; set; }
    public int ClassId { get; set; }

}
public class StudentClassViewModel
{
    public Class Class { get; set; }
    public Student Student { get; set; }
}

1 个答案:

答案 0 :(得分:1)

这就是我要做的。

控制器:

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            //can be fetched from database or your own custom implementation
            Class myClass = new Class()
            {
                ClassId = 1,
                Name = "Class 1"
            };
            Student myStudent = new Student()
            {
                Class = myClass,
                ClassId = 1,
                Name = "John Doe",
                StudentId = 1
            };
            StudentClassViewModel studentClassViewModel = new StudentClassViewModel()
            {
                Class = myClass,
                Student = myStudent
            };
            return View(studentClassViewModel);
        }


    }

查看:

@model stackoverflow.Models.StudentClassViewModel
@{
    ViewBag.Title = "Home Page";
}

<table>
    <thead>
        <tr><td>Student ID</td><td>Student Name</td><td>Class ID</td><td>Class Name</td></tr>
    </thead>
    <tbody>
        <tr>
            <td>@Model.Student.StudentId</td>
            <td>@Model.Student.Name</td>
            <td>@Model.Student.Class.ClassId</td>
            <td>@Model.Student.Class.Name</td>
        </tr>

        <!--OR-->

        <tr>
            <td>@Model.Student.StudentId</td>
            <td>@Model.Student.Name</td>
            <td>@Model.Class.ClassId</td>
            <td>@Model.Class.Name</td>
        </tr>
    </tbody>

</table>