2012-12-21 191 views
0

嗨我想創建一個動態菜單,我似乎陷入了一些麻煩。 問題是,當運行應用程序時,只有屬於上一個類別的項目纔會重複顯示所有類別。項目重複顯示

有,我可能已經犯過的錯誤,但我不能肯定wicth兩個地方我做了我也會把兩個表我的工作with.This的圖的地方就是圖:

enter image description here

我使用LINQ to SQL來存取權限的數據庫,並創建了一個單獨的類做this.Here是accesing的data.This代碼就是加入時,我可能已經犯過的錯誤首位該項目到字典阿爾多我用調試器跨過這個方法,它似乎是好的我不能確定,所以我發佈它:

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; 
    } 

的seccond的地方是,當我試圖顯示data.This是我最有可能認爲我犯的錯,當我tryed顯示it.Here是代碼:

@{ 
        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> 
       } 

編輯

enter image description here

+0

你能顯示重複菜單嗎? –

+0

我發佈了一個包含重複內容的圖片 –

回答

4

在這個循環中,你必須創建在每次迭代subcategories對象,否則你有一個參考單列表210:

foreach(var category in subcategoriesByCategory) { 
      string CategoryName = category.CategoryName; 
      subcategories = new List<string>(); // <-- create new object! 

      foreach(var subCategory in category.SubCategories) { 
       subcategories.Add(subCategory.SubCatName); 
      } 
      SubcatByCat.Add(CategoryName , subcategories); 
     }