Подтвердить что ты не робот

Разница между viewbag и viewstate?

Существует ли функциональная разница между ViewState в Webforms и ViewBag в MVC? Они, похоже, "одни и те же". И может использоваться одинаково. Я спрашиваю, потому что MVC продвигает веб-сайт без состояния и не набивает данные на странице, вызывая раздувание и более медленную производительность. Но, похоже, вы тоже можете это сделать в MVC. Все, что они сделали, похоже, просто придает ему новое имя.

4b9b3361

Ответ 1

ViewState в веб-формах сериализует данные формы в скрытое, зашифрованное поле в форме, поэтому данные могут быть повторно привязаны к обратной передаче.

ViewBag/ViewData​​strong > - это словарь, в который вы можете "забивать" данные. Например, вы можете добавить его в свой контроллер, а затем получить доступ к нему в своем представлении. Данные dynamic, что затрудняет работу с данными. ViewBag не отправляется клиенту, он является частью MVC (конвейер сервера).

Оба следует избегать.

ViewState, ну, не используя его и не найдя обходные пути. И ViewBag следует избегать с помощью ViewModels.

Ответ 2

Viewstate отправляется обратно вместе с содержимым формы на сервер, и, следовательно, значения в нем доступны в ответном сообщении. Суммарная сумка содержит только значения в ней до тех пор, пока страница не будет подана, а ViewBag будет удален из памяти. Таким образом, вы можете использовать ViewState для хранения состояния между вызовами, но вы не можете сделать то же самое с ViewBag.

Ответ 3

ViewBag не отправляется клиенту (браузеру). Его чисто что-то использовать для перехода от контроллера к представлению (которое перед его отправкой обратно клиенту).

В MVC, если вы получаете обратную передачу с этой страницы, вы не сможете восстановить свое "состояние", например, Viewstate, единственное состояние, которое у вас есть, - это все, что вы отправляете в браузер, и все, что вы отправляете назад.