我写了一段代码,从发起人列表中返回一个随机字符串的发起人名称。
该赞助商名称应该在每个页面上可见,因此我在共享的_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放入其视图中。
让视图递归地呈现其自己的动作是没有意义的。