ViewData 和 ViewBag 在哪里?
Where ViewData and ViewBag reside?
注意:这不是 this 问题的重复,因为它没有完全回答问题。
我的问题是,当您为 ViewData
或 ViewBag
赋值时(例如 TempData
驻留在 Session 中),它究竟存储在哪里。
两者都居住在 Session
吗?
如果不是那么在哪里?
正如@SlickSim 在评论中提到的,它们存储在堆中,因为引用类型在 .net 中。
ViewBag
是 dynamic
类型,但在内部是 System.Dynamic.ExpandoObject()
声明如下:
dynamic ViewBag = new System.Dynamic.ExpandoObject();
这就是为什么你可以这样做:
ViewBag.Foo = "Bar";
继承层次结构:
System.Object
System.Dynamic.ExpandoObject
的更多信息
请阅读 this codeproject 上有关值类型、引用类型、堆和堆栈的文章,这可能有助于您了解 ViewData 和 Viewbag 所在的位置。
希望对您有所帮助!
注意:这不是 this 问题的重复,因为它没有完全回答问题。
我的问题是,当您为 ViewData
或 ViewBag
赋值时(例如 TempData
驻留在 Session 中),它究竟存储在哪里。
两者都居住在 Session
吗?
如果不是那么在哪里?
正如@SlickSim 在评论中提到的,它们存储在堆中,因为引用类型在 .net 中。
ViewBag
是 dynamic
类型,但在内部是 System.Dynamic.ExpandoObject()
声明如下:
dynamic ViewBag = new System.Dynamic.ExpandoObject();
这就是为什么你可以这样做:
ViewBag.Foo = "Bar";
继承层次结构:
System.Object
System.Dynamic.ExpandoObject
的更多信息
请阅读 this codeproject 上有关值类型、引用类型、堆和堆栈的文章,这可能有助于您了解 ViewData 和 Viewbag 所在的位置。
希望对您有所帮助!