Должен ли я реализовывать ViewModel при использовании нескольких моделей в одном представлении?

Я хочу, чтобы пользователь заполнил 2 формы в представлении. Каждая форма должна «представлять» модель. Таким образом, представление должно использовать 2 модели.

Нужно ли мне реализовать ViewModel или я могу реализовать представление с двумя моделями?

Я уже пытался с Tuple<Item1, Item2> и потерпел неудачу


person Tassisto    schedule 08.05.2014    source источник
comment
Закрыть проголосовали --› не по теме ???   -  person Tassisto    schedule 08.05.2014
comment
Не знаю, почему люди минусуют, не оставляя причины.   -  person Yahya    schedule 08.05.2014
comment
ИМО, ваша ViewModel должна быть союзом обеих (бизнес) моделей. Не уверен, что вы можете реализовать представление с двумя моделями.   -  person Yahya    schedule 08.05.2014
comment
Взгляните на этот stackoverflow.com/a/14497187/125740.   -  person Yahya    schedule 08.05.2014


Ответы (3)


100% вы должны создать модель представления, состоящую из двух необходимых вам моделей.

public class MainViewModel
{
    public ModelA ModelA { get; set; }
    public ModelB ModelB { get; set; }
}

Вы должны сохранить ассоциацию одного представления -> одного класса модели представления. Я придерживаюсь этого в своих приложениях MVC, и это помогает мне упростить представления.

Я бы никогда не попытался смешать две модели представления в одном представлении; это делает вещи сложнее для себя.

person Jason Evans    schedule 08.05.2014

Это именно то, для чего нужен ViewModel.

Model обычно представляет объект реального мира, например Customer или Order.

ViewModel будет содержать всю информацию, необходимую для отображения представления. Это может быть (как в вашем случае) комбинация других моделей, некоторых метаданных или чего-то еще.

Таким образом, даже если вы можете передать две модели в свое представление (вы не можете, легко), то вы не должны этого делать, ViewModel - это правильное решение.

person Dave S    schedule 08.05.2014

да, вы должны создать новую модель представления, состоящую из объединения двух других моделей. Также рассмотрите механизм MVC (т. е. почему модели используются, как модели помогают и почему мы делаем их строго типизированными с представлениями). Вот почему , модели для. Это также поможет вам без проблем отправлять значения формы в какое-либо действие, оформленное как [Httppost], потому что это будет сложно, если у вас нет модели, или иметь 2 разные модели. сделать что-то вроде:

public class UserRegModel
{
  public User UserModel{ get; set; }
  public Contact ConModel { get; set; }
}
person Zeeshan    schedule 08.05.2014