سلام مجدد.
این مدل مربوطه که البته child از نوع collection بود و من فکر کردم با List شاید فرجی بشه اما نشد!!!!
public class Menu
{
/// <summary>
/// کد یکتایی
/// </summary>
public int Id { get; set; }
/// <summary>
/// عنوان
/// </summary>
public string Title { get; set; }
/// <summary>
/// والد
/// </summary>
//[ForeignKey("ParentId")]
public Menu Parent { get; set; }
/// <summary>
/// کد یکتایی والد
/// </summary>
public int? ParentId { get; set; }
/// <summary>
/// اولویت
/// </summary>
public int Periority { get; set; }
/// <summary>
/// وضعیت
/// </summary>
//public int IsActive { get; set; }
public List<Menu> Childs { get; set; }
}
کدی که در کنترلر مربوطه نوشتم _البته بقیه اکشنهای پیش فرض رو دیگه قرار ندادم:
private DatabaseContext db = new DatabaseContext();
[ChildActionOnly]
public virtual ActionResult UserHorizontalNavBarItems()
{
//var model = db.Menu.Where(category => category.ParentId == null).Include(category => category.Childs).ToList();
var model = db.Menu.Include(x => x.Parent).ToList();
return PartialView("_HorizontalNavigation", model);
}
// GET: Menus
public ActionResult Index()
{
var menu = db.Menu.Include(m => m.Parent);
return View(menu.ToList());
}
و بالاخره اینم از کد هلپر:
@using DynamicMenu.Models
@model IEnumerable<Menu>
<div class="container">
<nav role="navigation" class="navbar navbar-inverse">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" data-target="#navbarCollapse" data-toggle="collapse" class="navbar-toggle">
<span class="sr-only"> Toggle navigation </span>
<span class="icon-bar"> </span>
<span class="icon-bar"> </span>
<span class="icon-bar"> </span>
</button>
<a href="#" class="navbar-brand"> Brand </a>
</div>
<!-- Collection of nav links and other content for toggling -->
<div id="navbarCollapse" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
@{
int _counter = 1;
}
@ShowTree(Model.OrderByDescending(b => b.Periority).Reverse(), _counter)
@helper ShowTree(IEnumerable<DynamicMenu.Models.Menu> mnu, int counter)
{
<ul class="nav navbar-nav pull-right" style="direction:rtl;">
@{
foreach (var item in mnu)
{
<li class="@((counter == 1) ? "nav-item active" : "nav-item" )nav-item">
<a class="nav-link" href="#">@item.Title</a>
@if (item.Childs.Any())
{
<ul class="@((counter == 1) ? "nav-item active" : "nav-item" )nav-item">
@ShowTree(item.Childs.ToList(), counter)
</ul>
}
</li>
counter++;
}//end foreach
}
</ul>
}
</ul>
</div>
</nav>
</div>
@*<script>
$('ul.nav li.dropdown').hover(function () {
$(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(500);
},
function () {
$(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut(500);
}
);
</script>*@
<script src="~/Scripts/jquery.min.js"></script>
خواهش می کنم راهنماییم کنید بدجوری گیر کردم!!!!