3

在从 ViewBag 多次访问相同值的 View 中,将此值存储在局部变量中而不是频繁访问 ViewBag 对象更好吗?

4

1 回答 1

4

ViewBag只是一个动态包装器ViewData。因此,当您编写时,ViewBag.Foo您基本上是在查询ViewData["Foo"]. 但由于这是在运行时完成的动态解析,因此显然需要付出代价。这个成本是你不应该担心的,因为它很小,不会显着影响应用程序的性能,而且我不会费心将结果缓存到局部变量中。

我会烦恼的是 ViewBag 的使用,如果使用视图模型,我肯定会摆脱它。因此,您将拥有一个 Foo 属性的视图模型,而不是编写@ViewBag.Foo,而在您的视图中,您只需使用它 - @Model.Foo. 如您所知,调用属性获取器将非常快。它不仅会很快,而且您将受益于强大的打字和智能感知。

于 2012-10-08T17:03:58.470 回答