Asp.net-Mvc

ASP.NET MVC3 Razor 語法幫助 - 我陷入了無限循環

  • May 30, 2011

我正在嘗試將小型 mvc2 應用程序轉換為 mvc3 razor 語法。在我的 mvc2 應用程序中,我使用帶有母版頁的 aspx 視圖引擎。按照 Steven Sanderson 的 Pro MVC2 書第 2 版中的範例,在母版頁中,我呼叫了一個控制器操作,該操作為每個實體呈現部分視圖。這工作正常。

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

使用 _layout.cshtml 和 razor 我正在嘗試這個。這就是我的問題所在。

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

   }
</div>

這導致了一個無限循環,而且奇怪的是我得到了一個 StackOverflowException。誰能幫我糾正這個問題?這是控制器方法程式碼。

 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 在聖地亞哥

您沒有發布實際的堆棧跟踪,但從描述中我猜您的遞歸是在執行佈局頁面的“部分”操作視圖中,它呈現操作,呈現佈局等。

嘗試PartialView從您的子操作方法返回 a 而不是View. 這將阻止執行 _ViewStart 頁面,這將阻止為您的子操作呈現佈局。關於這個的更多討論在這裡:http ://forums.asp.net/t/1624687.aspx

@{
   Layout = string.Empty;
} 

在您的部分視圖頂部。

引用自:https://stackoverflow.com/questions/4247950