Я пытался следовать этому, так как он был процитирован в качестве примера во многих местах:MVC 4 TreeView Меню
и придумали следующие (несколько изменений из-за меня, используя mvc4 не 2)
В классе контроллера:
public ActionResult Index()
{
MenuDBContext db = new MenuDBContext();
ViewData["AllMenu"] = db.Menus.ToList();
return View(db.Menus.ToList().Where(c => c.PId == null));
}
вид класс:
@{
ViewBag.Title = "Index";
}
@model IEnumerable<Geo.Models.Menu>
<h2>Index</h2>
@foreach (var item in Model)
{
<li>
@item
@{var children = ViewData["AllMenu"].Where(c => c.PId == item.Id);}
@if (children.Count() > 0)
{
<ul>
@{Html.RenderPartial("ItemControl", children);}
</ul>
}
</li>
}
Я не могу для жизни меня разобраться, почему я не могу использовать. Где в ViewData ["AllMenu"] или .Count() для детей. Любые советы о том, куда я иду, будут фантастическими.
спасибо! Тем не менее, проблема решена. Однако, где все еще не работает, единственный отображаемый параметр - Enumerator, для меня это не имеет смысла, поскольку это нормально использовать. Где в классе контроллера? – user1857900
Как о литье как IEnumerable –
bluetoft
'@ {var menuItems = (ViewData [" AllMenu "] как List);} @ {var children = menuItems.Where (c = > c.PId == item.Id);} 'Работает, но кажется немного неаккуратным. IEnumberable не сделал, но спасибо за вашу помощь! –
user1857900