Aright所以我有一个数据库,其中包含一个名为CreationDate的列/属性的Posts集合。我想知道我的ViewModel将如何显示如下所示的存档:
..............
. 2012 .
. Feb .
. PostA .
. PostB .
. PostC .
. Mar .
. PostD .
. May .
. PostE .
..............
起初我虽然为什么不对控制器中的日期进行排序,但最终会出现一堆foreach
循环,这些循环将遍历每个帖子并查看Controller是否已经为其创建了一个容器每年|月。
我的另一个想法是在我的数据库中添加更多列,称为年份和月份。这样我可以获得所有不同的年份及其相应的月份,但我不确定这看起来如何,也不是我想在我的数据库/我的实体上的那些列......
有什么建议吗?
答案 0 :(得分: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
}
}
}