ASP.Net MVC Contrôleur pour _Layout

Je suis en train de travailler sur un menu dynamique du système pour MVC et juste pour le faire fonctionner, j'ai créé une vue partielle pour le menu et il fonctionne très bien en utilisant la syntaxe ci-dessous:

@Html.RenderPartial("_Menu", (Models.Menu)ViewBag.MainMenu)

MAIS, pour ce faire, je dois régler le MainMenu et FooterMenu (ou tout autre menu) dans le ViewBag sur chaque Contrôleur et chaque action. Pour éviter cela, je me demandais si il y avait un recommandé de l'événement que j'ai pu accéder à la ViewBag à l'échelle mondiale. Si non, personne ne vous recommandons de passer le Menu objet dans une variable de session? Le son n'est pas bonne pour moi, mais la seule chose que je peux penser de la droite maintenant.

Mise à JOUR:

_Layout.cshtml - j'ai inclus le nouvel appel à l'Action:

@Html.Action("RenderMenu", "SharedController", new { name = "Main" })

SharedController.cs - Ajout d'une Nouvelle Action:

public ActionResult RenderMenu(string name)
{
    if (db.Menus.Count<Menu>() > 0 && db.MenuItems.Count<MenuItem>() > 0)
    {
        Menu menu = db.Menus.Include("MenuItems").Single<Menu>(m => m.Name == name);
        return PartialView("_MenuLayout", menu);
    }
    else
    {
        return PartialView("_MenuLayout", null);
    }
}

Et il jette l'exception suivante:

Le contrôleur pour le chemin '/' n'a pas été trouvé ou n'est pas de mettre en œuvre
IController.

Mise à JOUR 2:

Donc, le problème est que j'ai référencé le Contrôleur par le nom complet et vous avez seulement besoin du nom du contrôleur de moins "Contrôleur". Neat friandise. Donc, pour mon exemple, cela fonctionne:

@Html.Action("RenderMenu", "Shared", new { name = "Main" })

OriginalL'auteur clockwiseq | 2014-02-22