Как отобразить значения из нескольких моделей с помощью ViewModel? - PullRequest
0 голосов
/ 22 мая 2019

Мне нужна одна таблица в View, которая содержит данные из моей ViewModel, которая содержит ссылки на две модели. Так: У меня есть StudentModel, ClassModel и 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 Ответ

1 голос
/ 22 мая 2019

Вот как бы я это сделал.

Контроллер:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...