7

WebForms アプリケーションを Razor に変換していますが、使用しようとする場合を除き、すべて正常に動作しますHtml.RenderAction。これを呼び出すたびに、StackOverflowException. 誰がこれを引き起こしているのかについて考えを持っていますか?

私のアクションのテンプレートは次のようになります。

@model dynamic   

should be rendering this

私の _Layout.cshtml ファイルでは、次のようにアクションをレンダリングします。

@{Html.RenderAction("MyPartialAction");}

私の_ViewStart.cshtmlファイルは次のようになります。

@{
    this.Layout = "~/Views/Shared/_Layout.cshtml";
}
4

1 に答える 1

19

問題は、アクションのテンプレートが使用するレイアウトを定義していないことです。したがって、_ViewStart.cshtml ファイルで指定されたものを自動的に取得します。これにより、実質的に _Layout.cshtml ファイルが無限にネストされます。したがって、StackOverflowException. 解決策は簡単です。アクション テンプレート内のレイアウトを次のように設定しますnull

@model dynamic
@{
   Layout = null;
}
should be rendering this

これで、テンプレートはレイアウト ファイルへの埋め込みを要求されなくなり、すべてが正常に機能します。

于 2013-01-30T12:02:40.860 に答える