2012-11-09 2 views
0

Je souhaite mettre en œuvre un menu dans mon _Layout.cshtml Vue:MVC4 RenderAction débordement provoque pile dans _Layout.cshtml

@Html.Partial("_LoginPartial") 
@{ Html.RenderAction("Index", "Home"); } 

@if (@ViewBag.Menus != null) 
{ 
    foreach (vw_UsuarioPerfilMenuFuncionalidade memo in @ViewBag.Menus) 
    { 
     if (memo.IdMenuLast == null) 
     { 
      <li><span>@memo.NomeMenu</span></li> 
      foreach (vw_UsuarioPerfilMenuFuncionalidade memo2 in @ViewBag.Menus) 
      { 
       if (memo.IdMenu == memo2.IdMenuLast) 
       { 
        <li><span>@memo2.NomeMenu</span></li> 
       } 
      } 
     } 
    } 
} 

Quand je charge la page, un System.StackOverflowException est jeté:

An unhandled exception of type 'System.StackOverflowException' occurred in System.Web.dll 

Pourquoi cette?

+0

Je pense qu'il est lié à itérer la même collection dans les boucles foreach imbriquées (@ ViewBag.Menus). Je me demande si vous devriez itéter quelque chose de différent dans votre deuxième foreach. – Tommy

+0

Mais si je lance le @ Html.ActionLink ("Accueil", "Index", "Accueil"), fonctionne bien sans aucun problème, mais le menu sera seulement sur une page à l'intérieur du BodyRender –

Répondre

4

Je pense que ce que vous avez:

@{Html.RenderAction("Index", "Home");} 

qui reviennent View, puis prendre _Layout.cshtml et boucle infinie ...

+0

Je pense que c'est juste n'importe quel logiciel pour implémenter le Menu

sur _Layout? –

+0

@LucasRodriguesSena Mettez le menu dans le 'PartialView' et le rendre avec' Html.RenderAction' du contrôleur, ajoutez la mise en cache et tout ira bien;) – webdeveloper

Questions connexes