MVC Частичный вид с более чем одной моделью - PullRequest
1 голос
/ 18 марта 2020

У меня есть древовидная структура объектов (как на картинке ниже). Классы Descendant1 и Descendant2 должны рассматриваться так же, как класс Form (класс root). Я хотел создать частичное представление для этого, однако мне нужно иметь модель в виде, так как я использую свойства из модели (такие как Имя из root класса)

structure of classes

Это мой код FormView, который должен быть в частичном представлении:

<div>
   @foreach (var subForm in Model.SubForms)
{
    Html.RenderPartial(partialView, subForm);
}
<div>@Model.Name</div>
</div>

Мне было интересно, можно ли было создать частичное представление, которое может иметь несколько моделей? Создать ли один контроллер для всех классов-потомков вместе? В противном случае, у вас есть идеи, как поступить?

1 Ответ

0 голосов
/ 18 марта 2020

Мне было интересно, можно ли создать частичное представление, которое может иметь несколько моделей?

Да, создать модель представления для этих 3 классов. Пример ниже называется FormViewModel.

public class FormViewModel{
   public class Descendant1 {get;set;}
   public class Descendant2 {get;set;}
   public class Descendant3 {get;set;}
}

Тогда, по вашему мнению, вы можете сделать;

@foreach (var subForm in Model.SubForms)
{
   FormViewModel fmv = new FormViewModel();

   // access its class properties
   fmv.Descendant1.SubForms.Add(new Form(){ // assign properties });

   // pass the view model to the partial view
   Html.RenderPartial(partialView, fmv);
}
...