ASP.NET MVC: Generando menú multi nivel usando ayudantes recursivos

Estoy usando este código para generar el menú, este menú llena los elementos de la base de datos (Tabla de categorías) usandoesta tecnica

Vista parcial :

@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>

        }
}

También estoy pasando el modelo del controlador a la vista parcial por encima de esta manera:

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);
}

mi modelo de categoría:

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; }

 }

Actualizado :
usar ayudantes recursivos es una buena idea, pero no genera un submenú para mí. cual es mi problema
¿Alguna idea?

Gracias en tu consejo

Respuestas a la pregunta(1)

Su respuesta a la pregunta