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

标签 asp.net-mvc asp.net-mvc-2 asp.net-mvc-3 razor

我正在尝试将小型 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/

相关文章:

c# - 获取当前 URL - 当 URL 包含具有多个值的查询字符串时

asp.net-mvc - Ajax 调用单独的 js 文件

css - 当鼠标悬停在 div 上时,如何更改 Html.Action 链接中链接的颜色?

asp.net-mvc - 如何在我的 View 中访问 ViewData 属性?

asp.net-mvc - 为什么在 Asp.net MVC 2 中的子操作中不允许重定向结果

asp.net-mvc-2 - ASP.NET MVC 2 通配符路由在处理空格时遇到问题

asp.net - 我可以在 MVC 中实现缓存吗?如果可以,如何实现?

asp.net-mvc - 使用 Visual Web Developer Express 2008 中的 ASP.NET MVC

asp.net - 如何控制对 ASP.Net MVC 3 View 上的表单字段的访问?

asp.net-mvc - 如何将存储库传递给 ASP.NET MVC 中的授权属性