我正在将WebForms应用程序转换为Razor,除非我尝试使用Html.RenderAction
,否则一切正常。每当我打电话给我时,我都会得到StackOverflowException
。有没有人知道可能导致这种情况的原因?
我的操作模板如下所示:
@model dynamic
should be rendering this
在我的_Layout.cshtml文件中,我渲染了这样的动作:
@{Html.RenderAction("MyPartialAction");}
我的_ViewStart.cshtml
文件如下所示:
@{
this.Layout = "~/Views/Shared/_Layout.cshtml";
}
答案 0 :(得分:18)
问题是您的操作模板未定义要使用的布局。因此,它会自动获取_ViewStart.cshtml文件中指定的那个。这实际上会导致_Layout.cshtml文件嵌套在 ad infinitum 中。因此StackOverflowException
。解决方案很简单。将操作模板中的布局设置为null
:
@model dynamic
@{
Layout = null;
}
should be rendering this
现在模板不会请求嵌入到布局文件中,一切正常。