【发布时间】:2011-12-17 04:13:18
【问题描述】:
今天早些时候,一位乐于助人的人(在 Stack Overflow 上)将我指向AutoMapper,我查看了它,我非常喜欢它!但是现在我有点卡住了。
在我的 Code First MVC3 应用程序中,在我的 [Home/Index] 上,我需要显示来自我的实体的以下信息:
- 帖子列表 [ int Id, string Body, int Likes, string p.User.FirstName, string p.User.LastName ]i>
- 标签列表 [int Id, string Name]
- 我的数据库中存在的所有作者列表 [ string UrlFriendlyName ]i>
到目前为止,通过对我的 Index ViewModel 执行以下操作,我只管理了列表中的第 1 点:
public class IndexVM
{
public int Id { get; set; }
public string Body { get; set; }
public int Likes { get; set; }
public string UserFirstName { get; set; }
public string UserLastName { get; set; }
}
在 Home 控制器上,我有 Index ActionMethod:
public ActionResult Index()
{
var Posts = postsRepository.Posts.ToList();
Mapper.CreateMap<Post, IndexVM>();
var IndexModel = Mapper.Map<List<Post>, List<IndexVM>>(Posts);
return View(IndexModel);
}
最后在我的视图中,我将它强类型化为:
@model IEnumerable<BlogWeb.ViewModels.IndexVM>
我通过以下方式将 IndexVM IEnumberable 中的每个项目传递给部分视图:
@foreach (var item in Model)
{
@Html.Partial("_PostDetails", item)
}
我的问题是,我怎样才能同时达到第 2 点和第 3 点,同时又不破坏我在第 1 点中取得的成就。
我尝试将我目前为 IndexVM 拥有的东西放入一个子类中,并在父类上拥有一个列表属性,但它不起作用。
【问题讨论】:
标签: asp.net-mvc-3 entity-framework-4.1 ef-code-first automapper