こんにちは、動的メニューを作成しようとしていますが、問題が発生したようです。問題は、アプリケーションを実行すると、最後のカテゴリに属するアイテムのみがすべてのカテゴリで繰り返し表示されることです。
間違いを犯した可能性のある場所が 2 つありますが、間違いを犯した場所であるかどうかはわかりません。使用している 2 つのテーブルの図も投稿します。これは図です。
データベースにアクセスするために LINQ TO SQL を使用しており、これを行うために別のクラスを作成しました。データにアクセスするためのコードは次のとおりです。これは、ディクショナリ アルドに項目を追加するときに間違いを犯した可能性がある最初の場所です。デバッガーでこのメソッドをステップオーバーしましたが、問題ないようです。確信が持てないので、投稿しました:
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;
}
2 番目の場所は、データを表示しようとしているときです。これは、表示しようとしたときに間違いを犯したと思われる場所です。コードは次のとおりです。
@{
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>
}
編集