ViewBag is a dynamic property(introduced in C# 4.0) where as ViewData is a dictionary object. Both are used for same purpose for passing data from controller to view.ViewBag since it is a dynamic property does not require boxing and unboxing because of its dynamic nature where as ViewData requires that.
Please refer my article http://www.c-sharpcorner.com/Blogs/12427/