将导航菜单设置为单独的控制器是非常聪明的 - asp mvc

时间:2012-01-11 19:32:15

标签: asp.net-mvc asp.net-mvc-3 razor

目前我有一个带导航菜单的页面。此导航菜单从数据库中获取项目和子项目。 我认为如果我把它作为一个单独的控制器来控制它会更容易。 例如:

public class NavigationMenu : Controller
{
    public ActionResult Menu()
    {
        Model model = // Get items and sub items
        return View(model);
    }
}

这是正确的方法吗?或者我不应该出于某种原因这样做?

如果我这样做,这个菜单视图将没有任何主布局。我应该从中删除所有<html><head><body>... html代码吗?

1 个答案:

答案 0 :(得分:3)

我们使用这种模式,虽然我们称之为NavigationController,而action方法是TopTabs。我们将它作为[ChildActionOnly],并返回局部视图。要在布局中渲染导航,我们使用@ Html.Action()。

我会回答你的问题,然后在你的布局或主视图中将局部视图渲染为子动作:

[ChildActionOnly]
public class NavigationController : Controller
{
    public PartialViewResult CommonMenu()
    {
        Model model = // Get items and sub items
        return PartialView(model);
    }
}