MVC4 RenderAction导致_Layout.cshtml中的堆栈溢出

时间:2012-11-09 16:15:13

标签: asp.net-mvc razor

我想在_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>
                }
            }
        }
    }
}

当我加载页面时,会抛出System.StackOverflowException

  

System.Web.dll中出现未处理的“System.StackOverflowException”类型异常

为什么?

2 个答案:

答案 0 :(得分:5)

我认为那是因为你有:

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

返回View,然后是_Layout.cshtml和无限循环......

答案 1 :(得分:0)

我遇到了类似的问题,并从下面的链接得到答案。

https://forums.asp.net/t/2130287.aspx?RenderAction+Infinite+Loop

第一步,删除以下代码

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

应该是:

@Html.Action("Index", "Home")

第二步:

在局部视图中,将布局设置为null:

@{ Layout = null; }