2010-04-13 16 views
1

我有一個Categories表格,其中每個類別都有一個ParentId,它可以引用任何其他類別的CategoryId我想顯示爲多級HTML列表,如下所示:從自我參照類別表格構建並渲染無限層次結構類別

<ul class="tree"> 
    <li>Parent Category 
     <ul> 
      <li>1st Child Category 
       <!-- more sub-categories --> 
      </li> 
      <li>2nd Child Category 
       <!-- more sub-categories --> 
      </li> 
     </ul> 
    </li> 
</ul> 

目前我遞歸呈現局部視圖並傳遞下一個類別。它工作的很好,但它是錯誤的,因爲我在視圖中執行查詢。

如何將列表渲染到樹對象中並在每次需要所有層次類別的列表時快速顯示該對象?

回答

1

創建一個自引用的視圖模型類。

使用您在視圖中執行的查詢將其填充到相應的模型類(或可能在DataContext部分類中)中。

將包含檢查結果並將結果存儲在Cache中的方法執行查詢的方法。

確保在對類別樹進行更改時使緩存失效。

如果查詢執行很多查詢(每個樹級別一個查詢),那麼考慮將類別表的內容作爲一個平面列表,然後使用linq將對象投影到您的視圖模型類中。