ASP.NET MVC 3 Razor recursive function

Viewed 32992

Okay, so I want to display a list containing lists of lists of lists...

I have no way of knowing how many levels there are to display, so I figured this is where I break out the old recursive routine.

I'm having trouble with exactly how to go about this though.

This is what I have so far (in view - simplified):

@foreach(MyObject item in @Model.ListOfObjects){ 
    <div> @item.Title </div>
    //Call recursive function?
}

Now each of these objects also have a List<MyObject>. I want to display each level below this div, with a tab indent per level for instance.

I was thinking a Razor function would be the thing to do here, but I need some help in forming it. Here's my thinking:

@functions{
    public static void ShowSubItems(MyObject _object){
         if(_object.ListOfObjects.Count>0){
             foreach(MyObject subItem in _object.listOfObjects){

                 // Show subItem in HTML
                 ShowSubItems(subItem);
             }
         }
     }
 }

But as you can see, I plainly need some help :)

3 Answers

In .Net core Instead of helper tag we have to use @functions. This below code might useful to some people. Here "IssuerData" is my custom object

@{
      ShowTreeData(Model.HierarchyList);
}

    @functions{

  public static void ShowTreeData(IList<IssuerData> issuers)
      {
       <ul>
      @foreach (var i in issuers)
           {
           <li>
            @i.IssuerName
             @if (i.Children.Any())
               {
                 ShowTreeData(i.Children);
               }
            </li>
          }
       </ul>
       }
   }
Related