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

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -