Существует ли разница между ViewState в Webforms и ViewBag в MVC? Они, похоже, «одни и те же». И может использоваться одинаково. Я спрашиваю, потому что MVC продвигает веб-сайт без состояния и не набивает данные на странице, что приводит к раздуванию и более низкой производительности. Но, похоже, вы тоже можете это сделать в MVC. Кажется, все, что они сделали, просто придает ему новое имя.Разница между сумкой и витриной?
ответ
ViewState в Web Forms сериализует данные формы в скрытое, зашифрованное поле в форме, поэтому данные могут быть повторно привязаны к обратной передаче.
ViewBag/ViewData - это словарь, в который вы можете «набить» данные. Например, вы можете добавить его в свой контроллер, а затем получить доступ к нему в своем представлении. Данные dynamic
, что затрудняет работу с данными. ViewBag не отправляется клиенту, это часть MVC (конвейер сервера).
Оба следует избегать.
ViewState by, ну, не используя его и обходные методы. И ViewBag следует избегать с помощью ViewModels.
ViewBag не отправляется клиенту (браузеру). Его чисто что-то использовать для перехода от контроллера к представлению (который перед его отправкой обратно клиенту).
В MVC, если вы получаете обратную передачу с этой страницы, вы не сможете восстановить свое «состояние», например, Viewstate, единственное состояние, которое у вас есть, - это все, что вы отправляете в браузер, и все, что вы отправляете обратно.
Viewstate отправляется обратно вместе с содержимым формы на сервер, и, таким образом, значения в нем доступны на обратной почте. Суммарная сумка содержит только значения в ней до тех пор, пока страница не будет подана, а ViewBag будет удален из памяти. Таким образом, вы можете использовать ViewState для хранения состояния между вызовами, но вы не можете сделать то же самое с ViewBag.
- 1. Разница между табло и контрольной сумкой
- 2. Разница между новой страницей, новой записью и новой витриной
- 3. В чем разница между «Сумкой слов» и «Сумкой функций» в компьютерном видении?
- 4. Какое различие между «наружной сумкой» и «внутренней сумкой» у свиней Латина?
- 5. Проблемы синхронизации между сумкой и couchdb с аутентификацией сервера
- 6. NHibernate ICriteria с сумкой
- 7. Использование лайтбоксов с неловкой витриной
- 8. Разница между композитором.phar между | и ||
- 9. Как создать файл с сумкой?
- 10. Разница между ~/и ../
- 11. разница между $ и $$
- 12. разница между & и * Декларация
- 13. Разница между% и/
- 14. Разница между jquery и $
- 15. разница между -> и ::
- 16. Разница между. и ==
- 17. разница между Scala «+:» и «::»
- 18. Grails: Разница между \ $ {} и $ {}
- 19. Разница между! и ~
- 20. разница между (*) [] и * [] декларации
- 21. Разница между == и .equals()?
- 22. Разница между fmod и%
- 23. Разница между === и ==
- 24. Разница между комментариями/* */и/** * /?
- 25. Разница между ./ и ~/
- 26. Разница между: = и not (=)
- 27. разница между «/» и Слим
- 28. разница между 'есть' и '=='
- 29. Разница между «источником» и «.»
- 30. разница между `% в%` и `` ==
ViewBag имеет свое место, например, с помощью DropDownList и передачи selectlist. Изучите MVC Scaffolded CRUD - он использует ViewBag. Ваше заявление слишком сильное. Возможно, модели просмотра предпочтительнее ViewBag, если это необходимо. см. http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications – RickAndMSFT
@ Rick.Anderson-at-Microsoft.com - согласился, что мое заявление может быть сильным, но не в случае DropDownList. Ваш ViewModel может (и должен) иметь свойство для 'SelectList', которое может быть связано с вашим представлением. Абсолютно никакой необходимости в ViewBag нет. – RPM1984
Код SelectList генерируется инструментами ASP.NET MVC, и большинство людей считают, что это правильный выбор для автоматического scaffolder. – RickAndMSFT