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>

目前,我正在递归渲染部分视图并传递下一个类别。它工作得很好,但这是错误的,因为我正在视图中执行查询。

每次我需要所有分层类别的列表时,如何将列表呈现为树对象并缓存它以便快速显示?

4

1 回答 1

1

创建一个自引用的视图模型类。

使用您在视图中执行的查询将其填充到适当的模型类(或者可能是您的DataContext部分类)中。

将执行查询的方法包装在检查结果并将结果存储在Cache.

确保在对类别树进行更改时使缓存无效。

如果查询执行大量查询(每个树级别一个),则考虑将类别表的内容作为平面列表获取,然后使用 linq to objects 将其投影到您的视图模型类中。

于 2010-04-13T11:25:26.183 回答