我想重新創建一個例子,從書第Pro-Asp.net MVC2的第5章。但只要我添加菜單代碼服務器停止工作。代碼的任何問題?臨Asp.net mvc 2:問題示例
public class NavController : Controller
{
private IProductRepository productsRepository;
public NavController(IProductRepository productsRepository)
{
this.productsRepository = productsRepository;
}
public ViewResult Menu()
{
Func<string, NavLink> makeLink = categoryName => new NavLink
{
Text = categoryName ?? "Home",
RouteValues = new RouteValueDictionary(new {
controller = "Products", action = "List", category = categoryName, page = 1
})
};
List<NavLink> navLinks = new List<NavLink>();
navLinks.Add(makeLink(null));
var categories = productsRepository.Products.Select(x => x.Category);
foreach (string categoryName in categories.Distinct().OrderBy(x => x))
navLinks.Add(makeLink(categoryName));
return View(navLinks);
}
}
Menu.cshtml
@model IEnumerable<SStore.WebUI.Models.NavLink>
@foreach (var link in Model)
{
Html.RouteLink(link.Text, link.RouteValues);
}
如果我從我的母版頁刪除此行,然後服務器工作
@{
Html.RenderAction("Menu", "Nav");
}
否則收到此錯誤
這是如何遞歸? Html.RenderAction只被調用一次。 – coure2011 2011-03-02 18:51:23
@ coure06,是的,但在這個行動裏面你回到了一個視圖。這個觀點有一個主人。這位大師再次調用RenderAction來執行相同的操作,這......你明白了。 – 2011-03-02 18:51:59
這是一個親錯誤。 LoL – foobar 2011-03-03 16:04:23