ViewData、ViewBag和TempData有什么区别?

6
我正在使用.NET MVC 4.0开发我的新项目。我想知道ViewData、ViewBag和TempData之间的区别是什么?
我尝试在网络上搜索,但没有找到任何好的文档资料。

1
请阅读以下内容:http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications - Anirudha Gupta
2
搜索“ViewData、ViewBag和TempData之间的区别是什么?”只给了我6000个结果! - user3559349
1个回答

9

前10个ASP.NET MVC面试问题中,为了将数据从控制器传递到视图并在下一个请求中使用,ASP.NET MVC框架提供了不同的选项,即ViewData、ViewBag和TempData。

ViewBag和ViewData都用于控制器和相应视图之间的通信。但是,这种通信仅限于服务器调用,如果重定向发生,则会变为null。因此,简而言之,它是一种在控制器和相应视图之间维护状态的机制。

ViewData是一个字典对象,而ViewBag是一个动态属性(C# 4.0的新功能)。ViewData作为一个字典对象,可以使用字符串作为键,并且对于复杂类型需要进行类型转换。另一方面,ViewBag没有类型转换和空检查。

TempData也是一个字典对象,它在HTTP请求的时间内保持不变。因此,Tempdata可用于在重定向之间维护数据,即从一个控制器到另一个控制器。


为什么答案被踩了? - Sumit Chourasia
3
你不觉得你应该澄清一下这是从这里复制过来的吗?引用其他网站并没有错,但原作者应该得到相应的荣誉。 - Claudio Redi
你也在回答一个明显的重复问题。 - John Saunders
是的,我应该也包括了参考资料... :) - Sumit Chourasia
当你从其他地方复制内容时,必须包含原始链接,并引用格式化复制的文本,否则看起来像是剽窃。 - user456814

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接