ViewState в веб-формах сериализовал данные формы в скрытое, зашифрованное поле в форме, поэтому данные могли быть повторно связаны при обратной передаче.
ViewBag / ViewData - это словарь, в который можно «вставлять» данные. Например, вы можете добавить его в свой контроллер, а затем получить к нему доступ в своем представлении. Данные dynamic
, что затрудняет работу с данными. ViewBag не отправляется клиенту, он является частью MVC (конвейер сервера).
Обе следует избегать.
ViewState, ну, не используя его и находя обходные пути. И ViewBag следует избегать путем использования ViewModels.