我应该将每个控制操作的菜单项列表传递给视图还是应该拉出列表?

时间:2012-05-17 16:39:17

标签: c# .net asp.net-mvc asp.net-mvc-3

我有一个带有扩展方法的布局,该方法获取菜单项列表并从中创建HTML。在控制器操作中我有:

public ActionResult Article(string rk)
        {
            Viewbag.menuItems = _menu.MenuItems("00");
            ..
            return View(vm);
        }

我在许多行动中都重复了这一点。然后在_layout我有:

Html.NavLinks(ViewBag.menuItems)

我意识到我们应该给出视图所需的内容,但在这种情况下,如果视图从动作中提取部分细节会更好吗?我问这个是因为我只有一个需要数据的布局,我认为在那里编码可能更好,而不是在20多个动作中检索数据并发送到视图。

如果它从布局中拉出来,那么MVC会缓存操作的结果吗?

如果从某个动作中提取结果更好,那我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

  

如果它从布局中拉出来,那么MVC会缓存操作的结果吗?

它不会缓存操作的结果否,它会在每个请求中获取它们。

  

如果从某个动作中提取结果更好,那我该怎么做呢?

不要“将它们从动作中拉出来”,只需将它们放入您从控制器发回的模型中,然后就可以在视图中使用它们。