问题
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?
回答1:
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.
来源:https://stackoverflow.com/questions/34635874/is-viewdata-the-new-standard-over-viewbag-for-asp-net-5-core