Asp.net-Mvc
ASP.NET MVC3 Razor 語法幫助 - 我陷入了無限循環
我正在嘗試將小型 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; }在您的部分視圖頂部。