0

そうですね、CreationDate という列/プロパティを持つ投稿のコレクションを含むデータベースがあります。ViewModel が次のようにアーカイブを表示するのにどのように見えるか疑問に思っていました:

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

最初は、コントローラーの日付を並べ替えてみませんか?しかし、最終的には、foreach各投稿をループして、コントローラーが各年|月のコンテナーを既に作成しているかどうかを確認する一連のループになりました。

もう 1 つの考えは、年と月という名前の列をデータベースに追加することでした。そうすれば、すべての異なる年とそれに対応する月を取得できますが、それがどのように見えるか、またはデータベース/エンティティにそれらの列が必要かどうかは正確にはわかりません...

助言がありますか?

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 に答える