1

スポンサーのリストからランダムな文字列のスポンサー名を返すコードを書きました。このスポンサー名は各ページに表示される必要があるため、共有の _layout ビューで RandomSponsor メソッドを呼び出します。この RandomSponsor メソッドは HomeController に基づいており、独自のビューを持ち、Html.Action

その時点でHtml.Action、プログラムはエラーを返します。

System.StackOverflowException {Cannot evaluate expression because the current thread is in a stack overflow state.}

これは私の RandomSponsor メソッドです:

    [HttpGet]   
[ChildActionOnly]
public ActionResult RandomSponsor()
{
    var model = service.getRandomSponsor();
    return PartialView("RandomSponsor", model);
}

プログラムが停止する RandomSponsor.cshtml

@Html.Action("RandomSponsor")

そして、共有レイアウト ページ _Layout.cshtml での私の呼び出し:

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

デバッグ中に、RandomSponsor メソッドがそのビューに移動することに気付きましたが、Html.Action が関数を再度要求しているため、ループに陥っています。RandomSponsor.cshtml ビューの Html.Action に間違ったパラメーターを指定したと思いますが、何が正しいのかわかりません。

誰かが同様の問題を抱えていたか、このエラーを修正する方法を知っていますか?私はすべて耳にしています。

よろしく

4

2 に答える 2

2

ビューでレンダリングする子アクションにする実際の HTML を配置する必要があります。

ビューに独自のアクションを再帰的にレンダリングさせるのは意味がありません。

于 2013-06-04T21:59:43.147 に答える
2

問題は、レイアウトとしてRandomSponsor設定した部分ビューのように見えることです。_Layout.chtml

ここに画像の説明を入力

したがって、次のシナリオがあります。

_Layout.chtml calls RandomSponsor, RandomSponsor first load it's layout _Layout.chtml,
_Layout.chtml calls RandomSponsor, RandomSponsor first load it's layout _Layout.chtml....till stackoverflow
于 2013-06-04T21:34:39.433 に答える