嗨,我正在尝试创建一个动态菜单,但我似乎遇到了一些麻烦。问题是,当运行应用程序时,只有属于最后一个类别的项目会针对所有类别重复显示。
有两个地方我可能犯了错误,但我不能确定是否是我犯的地方我还将发布我正在使用的两个表的图表。这是图表:
我正在使用 LINQ TO SQL 来访问数据库并创建了一个单独的类来执行此操作。这是用于访问数据的代码。这是我在将项目添加到 Dictionary 时可能犯错误的第一个地方我用调试器跨过这个方法,它似乎没问题我不能确定所以我发布了它:
public Dictionary<string , List<string>> subCatByCatList() {
Dictionary<string , List<string>> SubcatByCat = new Dictionary<string , List<string>>();
var subcategoriesByCategory = from category in dataContext.Categories
join subcategory in dataContext.SubCategories
on category.CatId equals subcategory.CatId
into cs
select new {
CategoryName = category.CatName ,
SubCategories = cs
};
List<string> subcategories = new List<string>();
foreach( var category in subcategoriesByCategory ) {
string CategoryName = category.CategoryName;
subcategories.Clear();
foreach( var subCategory in category.SubCategories ) {
subcategories.Add(subCategory.SubCatName);
}
SubcatByCat.Add(CategoryName , subcategories);
}
return SubcatByCat;
}
第二个地方是当我尝试显示数据时。这是我最有可能认为我在尝试显示数据时犯了错误的地方。这是代码:
@{
ComputerStoreDataAccess data = new ComputerStoreDataAccess();
Dictionary<string, List<string>> nav = data.subCatByCatList();
<ul>
@foreach (var category in nav)
{
<li><a href="#">@category.Key</a></li>
foreach (var subcategory in category.Value)
{
<div>
<ul>
<li>@subcategory</li>
</ul>
</div>
}
}
</ul>
}
编辑