3

我正在创建一个 .NET MVC 应用程序,并且我有一个要在其中显示以下内容的视图:

类别

后跟当前类别的项目列表

[可能] 后跟当前项目的子项目列表

我可以创建一个自定义 ViewModel 类,它发送 3 个单独的 IEnumerable 列表(类别、项目和子项目)。这种方法的问题是没有简单的方法可以在视图中以正确的顺序(层次结构)呈现数据。使用这种方法,我将拥有三个列表,然后需要在渲染期间添加条件逻辑。这意味着当我尝试将项目插入页面上的适当位置时,每个项目列表将被迭代多次。

我宁愿以正确的顺序传回数据,也许是一个 XML 文件。这里的正确方法是什么?

我还考虑过连接控制器中的数据并将格式化的文本传递给视图,但这似乎违反了让视图处理渲染的概念。

4

3 回答 3

3

我会在这里远离 XML。通过适当的层次结构;这似乎是合理的:

public class ViewModel
{
    Category[] Categories { get; set; }
}

public class Category
{
    Item[] Items { get; set; }
}

public class Item
{
    Item[] SubItems { get; set; }
}

那么你可以foreach在你的视图中嵌套循环。

于 2009-05-21T17:29:31.800 回答
0

您可能应该做的是在您的类别列表中使用自定义类型,并且每个项目都有一个包含子项目的属性。

这可以在实体框架中使用Navigation Properites轻松实现。

于 2009-05-21T17:26:59.170 回答
0

我将使用类型为 items 的属性设置 Category Model 类IEnumerable<item>

然后在类中包含一个IEnumerable<subItem> subItems属性。item

该视图将非常容易地遍历这些项目和子项目。

编辑:实际上,如果子项目与项目完全相同,那么可能只有一个item具有IEnumerable<item> subItems属性的类。这也将允许无限级别的子项目。

于 2009-05-21T17:27:00.153 回答