在多次从ViewBag访问相同值的视图中,最好将此值存储在局部变量中而不是经常访问ViewBag对象吗?
答案 0 :(得分:4)
ViewBag
只是围绕ViewData
的动态包装器。所以当你写ViewBag.Foo
时,你基本上是在查询ViewData["Foo"]
。但由于这是在运行时完成的动态分辨率,因此显然需要付出代价。这个成本是你不应该担心的,因为它太小了,不会显着影响你的应用程序的性能,我也不会把结果缓存到局部变量中。
我打扰的是使用ViewBag,如果查看模型,我肯定会放弃使用它。因此,不是编写@ViewBag.Foo
,而是会有一个Foo属性的视图模型,在视图中你将只使用它 - @Model.Foo
。正如你所知道的那样,召唤一个属性吸气剂将会非常快速。它不仅速度快,而且您可以从视图中的强类型和智能感知中受益。