Why do we have ViewBag
and ViewData
if they are doing the same thing in ASP.NET Core MVC? Is there anything which ViewBag
can do and ViewData
can't - or vice versa?
Any specific scenario when should I prefer one over the other?
Why do we have ViewBag
and ViewData
if they are doing the same thing in ASP.NET Core MVC? Is there anything which ViewBag
can do and ViewData
can't - or vice versa?
Any specific scenario when should I prefer one over the other?
They are similar, but the main difference is that ViewBag use dynamic types, allowing a less complex syntax.
ViewBag.Example=DateTime.Now;
<p>Result: ViewBag.Example.Year </p>
Against that, the same with ViewData could be:
ViewData["Example"]=DateTime.Now;
<p>Result: @((ViewData["Example"] As DateTime).Year) </p>
So with ViewData you need casting, and you can receive errors when perform a "renaming", and you won't have the aid of Intellisense, for example.
Additionally, it seems to be "slower" (but not enough to be a problem). Example: ViewBag vs ViewData performance difference in MVC?