C# 在.net MVC中呈现列表的子列表
我仍在学习.NETMVC,可能没有正确地寻找我需要的解决方案 简言之,我在数据库中有一个表,其结构如下:C# 在.net MVC中呈现列表的子列表,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我仍在学习.NETMVC,可能没有正确地寻找我需要的解决方案 简言之,我在数据库中有一个表,其结构如下: ID Category Subcategory FK 因此,每个类别以及每个子类别都可能出现多次,这是该类别所特有的 我希望在视图中呈现如下所示的菜单: Category 1 Subcategory 1a Subcategory 1b Subcategory 1c Category 2 Subcategory 2a Subcateg
ID Category Subcategory FK
因此,每个类别以及每个子类别都可能出现多次,这是该类别所特有的
我希望在视图中呈现如下所示的菜单:
Category 1
Subcategory 1a
Subcategory 1b
Subcategory 1c
Category 2
Subcategory 2a
Subcategory 2b
等等。现在在控制器中我有:
var categories = db.Category
.Where(oa => oa.Category != "")
.GroupBy(oa => new { oa.Category, oa.Subcategory })
.Select(oa => oa.FirstOrDefault());
然而,我不确定如何在视图中实现我想要实现的目标。我知道我必须以某种方式循环浏览列表,但我不知道如何循环。我知道这涉及到以下几点:
@foreach (var item in Model)
{
<li>
<a id="@item.ID" href="#">@item.Category</a>
</li>
}
@foreach(模型中的变量项)
{
}
但我只希望每个类别显示一次,然后需要所有子类别显示在父类别下。或者我可能需要更改控制器及其发送数据的方式?首先创建一个简单的视图模型来表示要在视图中显示的内容
public class CategoryVM
{
public string Name { get; set; }
public IEnumerable<string> SubCategories { get; set; }
}
@model IEnumerable<CategoryVM>
....
@foreach(var category in Model)
{
<h2>@category.Name</h2>
<ul>
@foreach(var subCategory in category.SubCategories)
{
<li>@subCategory</li>
}
</ul>
}
在我看来
public class CategoryVM
{
public string Name { get; set; }
public IEnumerable<string> SubCategories { get; set; }
}
@model IEnumerable<CategoryVM>
....
@foreach(var category in Model)
{
<h2>@category.Name</h2>
<ul>
@foreach(var subCategory in category.SubCategories)
{
<li>@subCategory</li>
}
</ul>
}
@model IEnumerable
....
@foreach(模型中的var类别)
{
@类别.名称
@foreach(类别中的var子类别。子类别)
{
- @子类别
}
}
首先创建一个简单的视图模型来表示要在视图中显示的内容
public class CategoryVM
{
public string Name { get; set; }
public IEnumerable<string> SubCategories { get; set; }
}
@model IEnumerable<CategoryVM>
....
@foreach(var category in Model)
{
<h2>@category.Name</h2>
<ul>
@foreach(var subCategory in category.SubCategories)
{
<li>@subCategory</li>
}
</ul>
}
在我看来
public class CategoryVM
{
public string Name { get; set; }
public IEnumerable<string> SubCategories { get; set; }
}
@model IEnumerable<CategoryVM>
....
@foreach(var category in Model)
{
<h2>@category.Name</h2>
<ul>
@foreach(var subCategory in category.SubCategories)
{
<li>@subCategory</li>
}
</ul>
}
@model IEnumerable
....
@foreach(模型中的var类别)
{
@类别.名称
@foreach(类别中的var子类别。子类别)
{
- @子类别
}
}
如果是树或更高级别的列表,代码是什么?我的意思是子列表下有更多的子列表。@SumonTito。您将需要一个分层视图模型-请参考示例,以及如何在控制器中填充它。然后,如果您希望最初呈现整个树(不使用jquery插件),那么您需要一个递归方法来生成html-如果需要进一步帮助,请参考使用扩展方法的示例,然后你需要问一个新的问题。谢谢亲爱的,我提出了一个问题,但无法得到我的解决方案,我现在提交你的建议给一个开发人员,他可能会帮助我。我也感谢你的支持。上帝保佑你:)如果是树或更高级别的列表,代码是什么?我的意思是子列表下有更多的子列表。@SumonTito。您将需要一个分层视图模型-请参考示例,以及如何在控制器中填充它。然后,如果您希望最初呈现整个树(不使用jquery插件),那么您需要一个递归方法来生成html-如果需要进一步帮助,请参考使用扩展方法的示例,然后你需要问一个新的问题。谢谢亲爱的,我提出了一个问题,但无法得到我的解决方案,我现在提交你的建议给一个开发人员,他可能会帮助我。我也感谢你的支持。上帝保佑你:)