.NET MVC从控制器传递嵌套数据查看
-
23-08-2019 - |
题
我创建一个.NET MVC应用程序和予具有其中我想显示下面的图:
<强>分类强>
随后的的项用于当前等级
的列表其次[可能]通过的子项当前项
的列表我可以创建发送3名单独的IEnumerable列表(类别,项目和子项目)的自定义ViewModel类。这种方法的问题是有没有简单的方法来呈现在视图中正确的顺序(层次)的数据。通过这种方法我将有三个列表,然后根据需要在渲染过程中添加条件逻辑。这意味着,我试图插槽中的物品进入页面上的适当位置,每个项目列表会被重复多次。
我宁愿传回数据以正确的顺序,也许为XML文件。什么是这里的正确方法呢?
我还设想在控制器串接数据并传递格式化文本到视图,但是这似乎违背了具有视图手柄呈现的概念。
解决方案
我想远离远离XML这里。通过适当的层次;这似乎合理:
public class ViewModel
{
Category[] Categories { get; set; }
}
public class Category
{
Item[] Items { get; set; }
}
public class Item
{
Item[] SubItems { get; set; }
}
那么你可以有嵌套循环foreach
您的视图中。
其他提示
什么你应该做的是有一个自定义类型您的分类列表,以及每个项目都有其中子项都包含一个属性。
这可以在实体框架可以容易地实现,使用导航性质在一>
我会成立的种类模型类与类型IEnumerable<item>
的项目属性。
然后包括在IEnumerable<subItem> subItems
类的item
属性。
视图将通过这些项目和子项目迭代非常容易。
修改强>实际上,如果子项是完全一样的项目,则有可能仅仅是一个单一的item
类与IEnumerable<item> subItems
属性。这也将允许子项的无限的水平。
不隶属于 StackOverflow