ViewData与ViewBag

时间:2017-09-21 15:40:46

标签: asp.net-mvc asp.net-mvc-4

我在其中一个博客中读到了

  

对于ViewData,在枚举类型转换时需要ViewBag   因为它不是动态类型转换

但是我们经常说ViewBag是ViewData的包装器,那么在类型转换时它是如何/为什么不同呢?

2 个答案:

答案 0 :(得分:1)

ViewBag确实是ViewData的包装器,您可以从源代码中看到:https://github.com/aspnet/AspNetWebStack/blob/62d0b2df0bcca848a8e0848fd1866928df15528e/src/System.Web.Mvc/ViewPage.cs。在这两种情况下,该值都不是强类型的,因此您需要在使用它之前将其强制转换,除非您想将其用作对象。

答案 1 :(得分:0)

ViewData

  • 这是键值字典集合
  • ViewData是一个字典对象,它是ControllerBase类的属性
  • ViewData比ViewBag快
  • ViewData在MVC 1.0中引入,并在MVC 1.0及更高版本中可用
  • ViewData还可以与.net Framework 3.5及更高版本一起使用
  • 枚举时需要
  • 类型转换代码

ViewBag

  • 这是一个类型对象
  • ViewBag是ControllerBase类的动态属性。
  • ViewBag比ViewData慢
  • ViewBag在MVC 3.0中引入,并在MVC 3.0及更高版本中可用
  • ViewBag仅适用于.net Framework 4.0及更高版本
  • 深入来说,ViewBag是动态使用的,因此枚举时无需进行类型转换。