注意:这不是this问题的重复,因为它没有完全回答这个问题。
我的问题是,当您为会话中的ViewData
或ViewBag
TempData
分配值时,它的确切存储位置。
两者也都在Session
?
如果不是那么?
答案 0 :(得分:4)
正如评论中提到的@SlickSim,它们存储在堆上,因为引用类型位于.net中。
ViewBag
属于dynamic
类型,但内部为System.Dynamic.ExpandoObject()
声明如下:
dynamic ViewBag = new System.Dynamic.ExpandoObject();
这就是你能做到的原因:
ViewBag.Foo = "Bar";
继承层次结构:
System.Object
System.Dynamic.ExpandoObject
的更多信息
请在codeproject上查看关于值类型,引用类型,堆和堆栈的this文章,它可以帮助您了解ViewData和Viewbag所在的位置。
我希望它有所帮助!