Member 13029506 Ответов: 2

Нужно ли вам использовать viewmodels в ASP.NET MVC?


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

Что я уже пробовал:

Модели, в данном случае, не имеют никакой логики в них, они pocos. Логика исходит из соответствующего репозитория.

Sandeep Mewara

MVC следует за Model-View-Controller.

ViewModel поставляется в MVVM.

Вы отметили MVC, как выглядит Viewmodel на картинке здесь?

Member 13029506

Дело в том, что мой коллега и я работаем с MVC, но он настаивает на работе с моделями представлений и в MVC

2 Ответов

Рейтинг:
20

Richard Deeming

Вы не иметь использовать их, но они могут сделать жизнь проще.

Например, изображение, которое вы хотите использовать для редактирования сущности. Эта сущность включает отношения с другими сущностями, которые вы хотите отобразить в виде раскрывающихся списков. Вы не хотите добавлять список параметров в класс сущностей, поэтому у вас есть два варианта:

  • Храните списки опций в ViewBag. Вы не получите никакой проверки во время компиляции, что ключи, которые вы используете в контроллере, совпадают с ключами, которые вы используете в представлении. И вам, вероятно, нужно будет вставить гипс в представление, так как ViewBag свойства возвращают dynamic, и вспомогательные методы HTML не могут быть использованы с dynamic ценности.
     
  • Используйте модель представления и сохраните в ней список. Нет необходимости в уродливых приведениях в представлении, и компилятор проверит, что свойство, которое вы используете в представлении, соответствует свойству в модели представления. (Хотя это не гарантирует, что вы использовали правильное свойство!)

@Html.DropDownListFor(m => m.SomeProperty, (IEnumerable<SelectListItem>)ViewBag.SomePropertyOptions, "(None)")
против:
@Html.DropDownListFor(m => m.SomeProperty, Model.SomePropertyOptions, "(None)")


Рейтинг:
0

Oshtri Deka

Вам не нужно быть прагматичным.
Если данные в вашей модели равны 1:1 с данными, которые вы хотите отобразить на экране, использование модели просто прекрасно.
С другой стороны, если вы хотите отобразить только часть данных или некоторые настройки его модели просмотра-это лучший подход IMO.
То же самое происходит, если вы хотите добавить некоторые дополнительные функции, которые не являются (или не должны быть) частью модели.

Линии часто размыты, используйте все, что соответствует вашим потребностям, но будьте последовательны в своем подходе.

Это мои 5 центов.