I have noticed that in all the examples and tutorials on ASP.Net 5 (core) I have seen from Microsoft and the default Web Application template in VS 2015 use @ViewData["XXX"] instead of @ViewBag.XXX. Is this the, now, recommended way of passing data up from the controller instead of ViewBag? I know that ViewBag is a wrapper for ViewData but in the old tutorials (ASP.NET 4.5) they use ViewBag. If they are now encouraging developers to use ViewData why the change?
            Asked
            
        
        
            Active
            
        
            Viewed 9,017 times
        
    32
            
            
         
    
    
        Matthew Verstraete
        
- 6,335
- 22
- 67
- 123
1 Answers
37
            Both are still valid. There is no specific guidance on the docs.asp.net github project. Although there is this discussion on docs.asp.net issues.
That links through to a comment from one the product team which says:
"Since ViewData (Dictionary) look-ups far out-perform ViewBag (dynamic) invocations, the last is probably the best choice."
So I'd say it purely a style choice based upon the fact that ViewData performs better.
 
    
    
        Martin Beeby
        
- 4,523
- 1
- 26
- 20
- 
                    Thanks this perfectly answers my question. I think I will be using `ViewData` my self. – Matthew Verstraete Jan 07 '16 at 02:44