4041
گاهی توی پروژه نیاز هست تا منو وزیر منو از بانک اطلاعاتی خوانده شود و در صفحه نمایش داده شود، اگر قرار است این منو در تمام پروژه نمایش داده شود بهتر است به صورت Partial نمایش داده شود.
این مطلب را از این لینک اقتباس گرفته شده است.
میخواهیم Category و SubCategory را در یک لیست تقریبا درختی نمایش دهیم برا ی این کار Model به این صورت خواهد بود:
public class ProductCategory
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool Active { get; set; }
public virtual IList<ProductTypeSubCategory> ProductSubTypeCategoris { get; set; }
}
و برای زیر منو یا subcategory
public class ProductTypeSubCategory
{
public int Id { get; set; }
public string PersianName { get; set; }
public string EnglishName { get; set; }
public string Description { get; set; }
public int ProductCategoryId { get; set; }
public virtual ProductCategory ProductCategoris { get; set; }
}
و برای ActionResult که یک پارشیال ویوو را برمیگرداند به این صورت نوشتم
public ActionResult _ProductCategory()
{
var PC = _db.ProductCategoris.Include("ProductSubTypeCategoris").Where(x=>x.Active).ToList();
return PartialView("_ProductCategory",PC);
}
”چیزی که در اینجا جالب بود در زمانی از Include استفاده میکنیم ، مثلا اینجا
var productSubCategoris = db.ProductSubCategoris.Include(p => p.ProductCategoris);
به راحتی عبارات لامبدا قابل استفاده است اما برای ActionResult که در بالا جهت به دست اوردن منو و زیر منو نوشتیم در قسمت include حتما لازم است string استفاده کنیم“
و در پارشیال ویوو داریم
@model IEnumerable<MyProject.Models.ProductCategory>
<h2>دسته بندی ها</h2>
@if (Model != null)
{
<div class="panel-group category-products" id="accordian">
@foreach (var ProdcutCategory in Model)
{
<!--category-productsr-->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordian" href="#sportswear">
<span class="badge pull-right"><i class="fa fa-plus"></i></span>
@Html.ActionLink(ProdcutCategory.Name, "Details", "Menu", new { id = ProdcutCategory.Id })
</a>
</h4>
</div>
<div id="sportswear" class="panel-collapse collapse">
<div class="panel-body">
<ul>
@foreach (var submenu in ProdcutCategory.ProductSubTypeCategoris)
{
@Html.ActionLink(submenu.PersianName, "Details", "SubMenu", new { id = submenu.Id },null)
}
</ul>
</div>
</div>
</div>
}
</div>