0

我想在我的_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”类型的未处理异常

这是为什么?

4

2 回答 2

5

我认为那是因为你有:

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

哪个返回View,然后它需要_Layout.cshtml无限循环......

于 2012-11-09T16:31:18.577 回答
0

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

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

第一步,删除以下代码

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

它应该是:

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

第二步:

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

@{ Layout = null; }
于 2018-06-10T11:08:29.923 回答