Существует ли функциональная разница между ViewState в Webforms и ViewBag в MVC? Они, похоже, "одни и те же". И может использоваться одинаково. Я спрашиваю, потому что MVC продвигает веб-сайт без состояния и не набивает данные на странице, вызывая раздувание и более медленную производительность. Но, похоже, вы тоже можете это сделать в MVC. Все, что они сделали, похоже, просто придает ему новое имя.
Разница между viewbag и viewstate?
Ответ 1
ViewState в веб-формах сериализует данные формы в скрытое, зашифрованное поле в форме, поэтому данные могут быть повторно привязаны к обратной передаче.
ViewBag/ViewDatastrong > - это словарь, в который вы можете "забивать" данные. Например, вы можете добавить его в свой контроллер, а затем получить доступ к нему в своем представлении. Данные dynamic
, что затрудняет работу с данными. ViewBag не отправляется клиенту, он является частью MVC (конвейер сервера).
Оба следует избегать.
ViewState, ну, не используя его и не найдя обходные пути. И ViewBag следует избегать с помощью ViewModels.
Ответ 2
Viewstate отправляется обратно вместе с содержимым формы на сервер, и, следовательно, значения в нем доступны в ответном сообщении. Суммарная сумка содержит только значения в ней до тех пор, пока страница не будет подана, а ViewBag будет удален из памяти. Таким образом, вы можете использовать ViewState для хранения состояния между вызовами, но вы не можете сделать то же самое с ViewBag.
Ответ 3
ViewBag не отправляется клиенту (браузеру). Его чисто что-то использовать для перехода от контроллера к представлению (которое перед его отправкой обратно клиенту).
В MVC, если вы получаете обратную передачу с этой страницы, вы не сможете восстановить свое "состояние", например, Viewstate, единственное состояние, которое у вас есть, - это все, что вы отправляете в браузер, и все, что вы отправляете назад.