Я пытаюсь преобразовать небольшое приложение mvc2 в синтаксис бритвы mvc3. В моем приложении mvc2 я использую механизм просмотра aspx с главной страницей. Следуя примеру из книги Стивена Сандерсона Pro MVC2 2-го издания, на главной странице я вызываю действие контроллера, которое отображает частичное представление для каждого объекта. Это работает правильно.
<div id="categories">
<% Html.RenderAction("Menu", "Nav"); %>
</div>
используя _layout.cshtml и бритву, я пытаюсь это сделать. Вот где моя проблема.
<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 в Сан-Диего