Должен ли я использовать модель представления только для двух объектов? - PullRequest
1 голос
/ 03 января 2012

Допустим, у меня есть представление, которое принимает Person объект.

Имеет три свойства, FirstName, LastName, Age

Теперь допустим, я добавляю еще одно поле текстового поля, которое не является частью объекта.

Мне не нужно значение текстового поля, оно просто заполнено данными, предназначенными для пользователя.

Когда вы редактируете поля и публикуете Person на контроллере, давайте предположим, что существует проблема проверки, поэтому вы возвращаете объект Person с ошибками

Проблема в том, что дополнительное текстовое поле утратило свою ценность, поскольку не является частью модели.

Итак, я создал ViewModel со строковым свойством для этого поля и свойством Person для хранения всех значений. Похоже, есть лучший способ сохранить значение в «специальном» текстовом поле?

Ответы [ 3 ]

2 голосов
/ 03 января 2012

Я думаю, что это абсолютно правильный способ сделать это.Модель представления - это модель для представления, а не модель для обработки, не связанной с пользовательским интерфейсом, она содержит Person и дополнительную видимую информацию.Это в точности соответствует концепции.Ваша личность, по-видимому, является моделью (не для просмотра), и поэтому, когда у вас есть действующее сообщение, вы получаете его, чтобы сохранить его данные (или что-то еще), и дополнительная просматриваемая информация не имеет значения в этот момент, потому что вы больше не находитесь вчасть View / UI вашего приложения.Сделайте вид строго типизированным вашей модели представления и получите доступ к Человеку внутри него

@model myViewModel

@Model.Person.FirstName
@Model.OtherViewOnlyValue

Используйте модель представления, намного более чистую, чем ViewBags / Session / ViewData и т. Д.

2 голосов
/ 03 января 2012

Вы должны быть в состоянии получить это дополнительное поле из опубликованных полей. Как вы устанавливаете это впервые, через ViewBag? Вы должны быть в состоянии установить его снова.

Но что именно не так с использованием ViewModel? Рано или поздно у вас будет 2 или 3 дополнительных поля или Персона и Назначение.

1 голос
/ 04 января 2012

Во многих случаях вы можете подумать, что вам не нужно включать отображение пользовательского интерфейса в ViewModel, но в большинстве случаев вы добавите отображение в ViewModel. Я считаю, что ViewModel должен представлять все на экране вашего интерфейса. Поскольку HTTP не имеет состояния, значения формы записи будут играть важную роль в заполнении элементов управления пользовательского интерфейса.

...