【发布时间】:2023-03-29 18:50:02
【问题描述】:
注意:这不是 this 问题的重复,因为它没有完全回答问题。
我的问题是,当您将值分配给 ViewData 或 ViewBag(如 TempData)驻留在 Session 中时,它究竟存储在哪里。
两者都位于Session 中?
如果不是,那在哪里?
【问题讨论】:
-
您链接的问题答案明确指出:这完全发生在服务器端,但数据“存储”在服务器上的想法具有误导性。这些是仅在 HTTP 请求的生命周期内存在的瞬态对象。
-
但我的问题是它驻留在会话中?如果没有在哪里?我也知道这些对象的生命周期和限制。但它所在的地方正是我要寻找的。你能比链接的更详细地回答这个问题吗?
-
两者都驻留在会话中。您可以通过禁用控制器上的 SessionStateBehavior 来检查这一点。看看这里c-sharpcorner.com/UploadFile/ff2f08/…
-
我不确定“居住”是什么意思。
ViewBag和ViewData是ControllerBase类的属性。 -
viewbag 和 viewdata 作为控制器的属性,存储在堆上,因为引用类型在 .net 中。它们不会保留在会话中,而是从控制器传递到 viewpage 。当请求结束时,控制器被释放,内存地址被标记为垃圾回收。
标签: asp.net-mvc viewbag viewdata