私は次のクラスを持っており、Thread クラスの投稿のコレクションを ThreadView クラスのページ付けされた投稿のコレクションにマップする必要がありますが、その方法について完全に困惑しています。
// Database class
public class Thread
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual IEnumerable<Post> Posts { get; set;}
}
// View class
public class ThreadView
{
public int Id { get; set; }
public string Title { get; set; }
public PaginatedList<PostView> Posts { get; set; }
}
public class PaginatedList<T> : List<T>
{
public PaginatedList<IEnumerable<T> source, int page)
{
...
}
}
私のマッピングは単純です:
Mapper.CreateMap<Thread, ThreadView>();
Mapper.CreateMap<Post, PostView>();
そして、私のアクションメソッドは次のようになります:
public ViewResult ViewThread(int threadId, int page = 1)
{
var thread = _forumService.GetThread(threadId, page);
var viewModel = Mapper.Map<Thread, ThreadView>(thread);
return View(viewModel);
}
しかし、これは明らかに機能しません。誰でも助けることができますか?
ありがとう
アップデート
少し匂いがしますが、今のところ、このようにすることで解決すると思います。
public ViewResult ViewThread(int id, int page = 1)
{
var thread = _forumService.GetThread(id, page);
var posts = Mapper.Map<IEnumerable<Post>, IEnumerable<PostView>>(thread.Posts);
var viewModel = new ThreadView {
Id = thread.Id,
Title = thread.Title,
Posts = new PaginatedList<PostView>(posts, page)
};
return View(viewModel);
}
他の誰かがこれを行う方法を知らない限り?