AFAIK, существует два способа передачи данных в представление из контроллера: один свободно печатается (с помощью ViewBag или ViewData), другой строго типизируется. Большинство рекомендуют последнее из-за строгой проверки во время компиляции.
В динамическом веб-приложении мы сталкиваемся со сценариями, когда требуется передать несколько объектов из контроллера в представление. В этом случае можно передать одну сущность в качестве модели и поместить ее в словарь ViewBag. Или можно создать совершенно новый класс ViewModel, объединяя различные сущности и затем передавая его в представление.
Недавно я столкнулся с такой проблемой; Мне нужно было передать модель категории, у которой был список подкатегорий и продуктов, зарегистрированных в ней как свойства. И затем, в представлении, мне нужно было воспроизвести подкатегории и убедиться, что разбиение на страницы происходит в коллекции продуктов, если их больше 10. Поэтому я не мог использовать строго типизированное представление ни для модели категории, ни для модели продукта.
Решение было представлено следующими коллегами, tvanfosson и Ufuk Hacıoğulları (Большое спасибо обоим) в этой публикации . И это использовать ViewModel. Я все еще пытаюсь понять и работать над этим, и, похоже, это правильное решение.
Вопрос : Это лучший способ справиться с такими ситуациями? Кроме того, когда рекомендуется использовать ViewModel, а когда обходить его в пользу ViewBag & a Model.