我想在_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”类型异常
为什么?
答案 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; }