gpt4 book ai didi

asp.net-mvc - ASP.NET MVC3 Razor 语法帮助 - 我陷入无限循环

转载 作者:行者123 更新时间:2023-12-02 12:39:11 25 4
gpt4 key购买 nike

我正在尝试将小型 mvc2 应用程序转换为 mvc3 razor 语法。在我的 mvc2 应用程序中,我使用带有母版页的 aspx View 引擎。按照 Steven Sanderson 的 Pro MVC2 书第 2 版中的示例,在母版页中,我调用一个 Controller 操作,该操作为每个实体呈现部分 View 。这工作正常。

 <div id="categories">
<% Html.RenderAction("Menu", "Nav"); %>
</div>

使用 _layout.cshtml 和 razor 我正在尝试这个。这就是我的问题所在。

 <div id="categories">
@{
Html.RenderAction("Menu", "Nav");

}
</div>

这现在导致了无限循环,而且我得到了奇怪的 StackOverflowException。谁能帮我解决这个问题?这是 Controller 方法代码。

  public ViewResult Menu(string personId)
{
Func<string, NavLink> makeLink = pId => new NavLink
{
Text = pId ?? "Home"
, RouteValues = new RouteValueDictionary(new { controller = "Person", action = "Person"})

};

List<NavLink> navLinks = new List<NavLink> {makeLink(null)};


Func<Person, NavLink> makeLink2 = p => new NavLink
{
Text = p.Name ?? "Home"
, RouteValues = new RouteValueDictionary(new { controller = "Person", action = "Person", personId = p.Id })

};

var people = usersRepository.People.OrderBy(x => x.Name);
var peopleLinks = EnumerableHelpers.MakeLinks(people, makeLink2);

navLinks.AddRange(peopleLinks);

return View("_menu", navLinks);
}

非常感谢任何帮助或提示。

谢谢,
~ck 在圣地亚哥

最佳答案

您没有发布实际的堆栈跟踪,但从描述中我猜测您的递归是在运行布局页面的“部分”操作 View 中,该 View 呈现操作,呈现布局等。

尝试从子操作方法返回 PartialView 而不是 View。这将阻止执行 _ViewStart 页面,从而阻止为您的子操作呈现布局。有关于此的更多讨论在这里:http://forums.asp.net/t/1624687.aspx

关于asp.net-mvc - ASP.NET MVC3 Razor 语法帮助 - 我陷入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com