我想重新创建一个例子,从书第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