razor - ASP.NET MVC : Generating multi level menu using recursive helpers -
i using code generating menu, menu populates items database (category table) using this technique
partial view :
@using sarbarzdarb.helper @model ienumerable<sarbarzdarb.models.entities.category> @showtree(model) @helper showtree(ienumerable<sarbarzdarb.models.entities.category> categories) { foreach (var item in categories) { <li class="@(item.parentid == null && item.children.any() ? "dropdown-submenu" : "")"> @html.actionlink(item.name, actionname: "category", controllername: "product", routevalues: new { id = item.id, productname = item.name.toseourl() }, htmlattributes: null) @if (item.children.any()) { showtree(item.children); } </li> } }
also i'm passing model controller above partial view way :
public ilist<category> getall() { return _category.where(category => category.parentid == null) .include(category => category.children).tolist(); } public actionresult categories() { var query = getall(); return partialview("_categories",query); }
my category model:
public class category { public int id { get; set; } public string name { get; set; } public int? parentid { get; set; } public virtual category parent { get; set; } public virtual icollection<category> children { get; set; } public virtual icollection<product> products { get; set; } }
updated :
using recursive helpers idea doesn't generate sub-menu me. what's problem?
any idea?
thanks in advise
finally solved problem adding <ul class="dropdown-menu">
:
@using sarbarzdarb.helper @model ienumerable<sarbarzdarb.models.entities.category> @showtree(model) @helper showtree(ienumerable<sarbarzdarb.models.entities.category> categories) { foreach (var item in categories) { <li class="@(item.children.any() ? "dropdown-submenu" : "")"> @html.actionlink(item.name, actionname: "category", controllername: "product", routevalues: new { id = item.id, productname = item.name.toseourl() }, htmlattributes: null) @if (item.children.any()) { <ul class="dropdown-menu"> @showtree(item.children) </ul> } </li> } }
Comments
Post a Comment