我有一个带有扩展方法的布局,该方法获取菜单项列表并从中创建HTML。在控制器操作中我有:
public ActionResult Article(string rk)
{
Viewbag.menuItems = _menu.MenuItems("00");
..
return View(vm);
}
我在许多行动中都重复了这一点。然后在_layout我有:
Html.NavLinks(ViewBag.menuItems)
我意识到我们应该给出视图所需的内容,但在这种情况下,如果视图从动作中提取部分细节会更好吗?我问这个是因为我只有一个需要数据的布局,我认为在那里编码可能更好,而不是在20多个动作中检索数据并发送到视图。
如果它从布局中拉出来,那么MVC会缓存操作的结果吗?
如果从某个动作中提取结果更好,那我该怎么做呢?
答案 0 :(得分:2)
如果它从布局中拉出来,那么MVC会缓存操作的结果吗?
它不会缓存操作的结果否,它会在每个请求中获取它们。
如果从某个动作中提取结果更好,那我该怎么做呢?
不要“将它们从动作中拉出来”,只需将它们放入您从控制器发回的模型中,然后就可以在视图中使用它们。