助手 ShowTree 显示子项 2 次
Helper ShowTree Displaying Child Items 2 Times
我在我的项目中使用@Helper ShowTree,但我对子项目有疑问。在我看来,子项目显示 2 次并且看起来像父菜单。我在现场查看了样本,但没有发现差异。我哪里错了?
我的实体
public class Kategori
{
public Kategori()
{
this.Children = new List<Kategori>();
}
public int ID { get; set; }
public string Name { get; set; }
public int ParentID { get; set; }
public virtual List<Kategori> Children { get; set; }
}
控制器
public ActionResult Index()
{
context = new CrudContext();
List<Kategori> kategoriler= context.Kategoriler.ToList();
return View(kategoriler);
}
我认为我的问题在我看来。
查看
@model List<JQueryDataTableCrud.Models.Kategori>
@RecursiveMenu(Model)
<div>
@helper RecursiveMenu(List<JQueryDataTableCrud.Models.Kategori> kategoriler)
{
<ul>
@foreach (var item in kategoriler)
{
<li>
<span>@item.Name</span>
@if (item.Children.Any() && item.Children != null)
{
@RecursiveMenu(item.Children)
}
</li>
}
}
</ul>
}
</div>
结果
.Elektronik
-Cep Telefonu
-Mutfak
.Bilgisayar
.Cep Telefonu
.Mutfak
如果您将所有 Kategori
存储在同一个 table 中,那么您将需要一种方法来区分 parent 和 child初始查询。
var kategoriler = context.Kategoriler.Where(k => k.ParentID == 0).ToList();
/*
.Elektronik
-Cep Telefonu
-Mutfak
.Bilgisayar
*/
这应该将 top-level 限制为两个 parent 项。这假设你设置 ParentID = 0
;这还假设您的上下文填充了 Children
.
你的递归例程应该没问题
@helper RecursiveMenu(List<JQueryDataTableCrud.Models.Kategori> kategoriler)
{
@foreach (var item in kategoriler)
{
<span>@item.Name</span>
@if (item.Children.Any() && item.Children != null)
{
@RecursiveMenu(item.Children)
}
}
}
我在我的项目中使用@Helper ShowTree,但我对子项目有疑问。在我看来,子项目显示 2 次并且看起来像父菜单。我在现场查看了样本,但没有发现差异。我哪里错了?
我的实体
public class Kategori
{
public Kategori()
{
this.Children = new List<Kategori>();
}
public int ID { get; set; }
public string Name { get; set; }
public int ParentID { get; set; }
public virtual List<Kategori> Children { get; set; }
}
控制器
public ActionResult Index()
{
context = new CrudContext();
List<Kategori> kategoriler= context.Kategoriler.ToList();
return View(kategoriler);
}
我认为我的问题在我看来。
查看
@model List<JQueryDataTableCrud.Models.Kategori>
@RecursiveMenu(Model)
<div>
@helper RecursiveMenu(List<JQueryDataTableCrud.Models.Kategori> kategoriler)
{
<ul>
@foreach (var item in kategoriler)
{
<li>
<span>@item.Name</span>
@if (item.Children.Any() && item.Children != null)
{
@RecursiveMenu(item.Children)
}
</li>
}
}
</ul>
}
</div>
结果
.Elektronik
-Cep Telefonu
-Mutfak
.Bilgisayar
.Cep Telefonu
.Mutfak
如果您将所有 Kategori
存储在同一个 table 中,那么您将需要一种方法来区分 parent 和 child初始查询。
var kategoriler = context.Kategoriler.Where(k => k.ParentID == 0).ToList();
/*
.Elektronik
-Cep Telefonu
-Mutfak
.Bilgisayar
*/
这应该将 top-level 限制为两个 parent 项。这假设你设置 ParentID = 0
;这还假设您的上下文填充了 Children
.
你的递归例程应该没问题
@helper RecursiveMenu(List<JQueryDataTableCrud.Models.Kategori> kategoriler)
{
@foreach (var item in kategoriler)
{
<span>@item.Name</span>
@if (item.Children.Any() && item.Children != null)
{
@RecursiveMenu(item.Children)
}
}
}