0

好吧,所以我有一个包含帖子集合的数据库,其中包含一个名为 CreationDate 的列/属性。我想知道我的 ViewModel 会如何显示这样的存档:

..............
. 2012       .
.    Feb     .
.      PostA .
.      PostB .
.      PostC .
.    Mar     .
.      PostD .
.    May     .
.      PostE .
..............

起初我虽然我为什么不对控制器中的日期进行排序,但它最终成为一堆foreach循环,将遍历每个帖子,看看控制器是否已经为每个年|月制作了一个容器。

我的另一个想法是在我的数据库中添加更多列,称为年和月。这样我就可以获得所有不同的年份及其相应的月份,但我不确定这会是什么样子,也不知道我是否希望这些列在我的数据库/我的实体上......

有什么建议么?

4

1 回答 1

0

好的。这是一个建议;在这种情况下,如果您可以使用ViewModel

public class PostsViewModel
{
    public int Year;
    public List<MonthPosts> Posts;

    public class MonthPosts
    {
        public string Month { get; set; }   // or may be enum with Months
        public List<Post> MPosts{ get; set;}   // your collection of Posts if they carry many other column values that are needed at the view. If it is just to render the description, instead of list of posts you can pass the list of description of the Posts.
    }
}

在您的控制器中从您的帖子集合中您应该能够填写PostsViewModel并将其返回到视图

在你看来

@model IEnumerable<PostsViewModel>

现在您应该能够在视图中对其进行迭代并根据您的需要进行渲染(存档格式)

视图中的伪语法

foreach(PostViewModel pvm in Model)
{
    render pvm.Year
    foreach(PostViewModel.MonthPosts mp in pvm.Posts)
    {
         render mp.Month;
         foreach(Post p in mp.MPosts)
         {
              render p.Description   //according to your needs
         }
    }
}
于 2012-05-28T23:16:36.160 回答