MVC ViewBag:在View中使用ViewBag访问DB比在View中直接访问更快

时间:2011-08-09 13:46:48

标签: asp.net-mvc model-view-controller view controller viewbag

我想知道什么是更快。我应该将我从DB查询的信息存储到ViewBag中,然后在View中访问和显示它,还是应该直接在View中进行查询。 控制器是MVC的中间层,所以对我来说似乎合乎逻辑,访问控制器中的DB应该更快。

示例:

1)在Controller中,我访问数据库并将信息放入ViewBag,以便我可以在View中显示它。

控制器:

EVENT e = db.EVENT.Find(id);
ViewBag.event = e;

if (e.poster_id != null)
{
    poster = e.DATA.path;
}
ViewBag.dict_poster = poster;

视图:

<p>POSTER: @ViewBag.dict_poster;</p>

2)在Controller中,我只将DB中的常规数据放入ViewBag,并在View中访问它。

控制器:

EVENT e = db.EVENT.Find(id);
ViewBag.event = e;

视图:

<p>
    @if(ViewBag.event.poster_id != null)
    {
        @ViewBag.event.DATA.path;
    }
</p>
  • 什么是更好,更合适的使用?什么更快?
  • 如果我有一个非常分支的数据库并且我必须将所有内容存储到“ViewBag.e”中,将各个值存储到ViewBags中是否更好更快,而不是在View中访问它们还是从View更快地直接访问它?
  • 列表怎么样? (将DB信息存储到列表中,将其放入ViewBag中,然后在View中访问它)

我很感激你的答案并补充说明......

1 个答案:

答案 0 :(得分:2)

您不应该直接从视图访问数据层,这应该在控制器中完成。另外,请考虑将强类型视图模型传递给视图,而不是使用ViewBag。

有关在MVC中使用视图模型的原因,请参阅http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/