Почему используется ViewData, когда у нас есть ViewBag?

ViewData и ViewBag служат той же цели - передачи данных из контроллера в представление или между представлениями. Разница между ними заключается в базовой реализации и способах ее обработки в результате (приведение типов в случае ViewData и т. Д.)

Итак, может ли быть какой-нибудь сценарий, в котором ViewData предпочтительнее ViewBag?


person RKS    schedule 29.11.2014    source источник
comment
К вашему сведению, В чем разница между ViewData и ViewBag?   -  person    schedule 29.11.2014
comment
Спасибо @StephenMuecke. Я проголосовал за закрытие вопроса.   -  person RKS    schedule 29.11.2014


Ответы (1)


ViewBag - это динамическое свойство, использующее новые динамические функции C # 4.0.

По сути, это оболочка вокруг ViewData, которая также используется для передачи данных от контроллера в соответствующее представление.

Будучи оболочкой, она не содержит данных - это просто ярлык для доступа к ViewData. В настоящее время у вас нет причин использовать ViewData напрямую.

person Mihai Dinculescu    schedule 29.11.2014
comment
ViewBag будет медленнее, чем ViewData; но, вероятно, этого недостаточно, чтобы вызывать беспокойство. См .: stackoverflow.com/a/5079039/88409 По сути, способ привязки ViewBag к ViewData гарантирует, что (несмотря на DLR CallSite) это не может быть быстрее, чем простой доступ к ViewData напрямую, потому что CallSite в конечном итоге привязывается к методу, который просто обращается к ViewData напрямую, как вы это делаете самостоятельно. Таким образом, ViewBag накладывает дополнительный, хотя, вероятно, незначительный уровень косвенности. - person Triynko; 09.07.2015