ViewData和ViewBag驻留在哪里?

时间:2015-07-21 06:51:44

标签: asp.net-mvc viewbag viewdata

注意:这不是this问题的重复,因为它没有完全回答这个问题。

我的问题是,当您为会话中的ViewDataViewBag TempData分配值时,它的确切存储位置。

两者也都在Session

如果不是那么?

1 个答案:

答案 0 :(得分:4)

正如评论中提到的@SlickSim,它们存储在堆上,因为引用类型位于.net中。

ViewBag属于dynamic类型,但内部为System.Dynamic.ExpandoObject()

声明如下:

dynamic ViewBag = new System.Dynamic.ExpandoObject();

这就是你能做到的原因:

ViewBag.Foo = "Bar";

继承层次结构:

System.Object    
    System.Dynamic.ExpandoObject

有关ExpandoObject

的更多信息

请在codeproject上查看关于值类型,引用类型,堆和堆栈的this文章,它可以帮助您了解ViewData和Viewbag所在的位置。

我希望它有所帮助!