我写了一段代码,从发起人列表中返回一个随机字符串的发起人名称。
该赞助商名称应该在每个页面上可见,因此我在共享的_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提供了错误的参数,但我不知道正确的参数是什么。

有谁有类似的问题或知道如何解决此错误,我很高兴。

问候

最佳答案

您需要将要子操作呈现的实际HTML放入其视图中。

让视图递归地呈现其自己的动作是没有意义的。

10-06 04:00