首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将POCO类映射到MVC模型

将POCO类映射到MVC模型
EN

Stack Overflow用户
提问于 2013-04-07 21:58:01
回答 2查看 4.6K关注 0票数 1

我对MVC和EF都是新手。遵循一些不错的教程,我终于创建了我的POCO类。

我正在尝试在分层架构中使用POCO类创建一个MVC模型。我的POCO类位于名为Entities的类库项目中。

我的MVC4应用程序是一个引用实体的Web项目。

我查询数据库并在实体中包含内容,并希望将3-4个POCO类映射到单个模型,这样我就可以创建一个强类型视图。

我不确定如何继续。在这件事上帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-07 22:05:34

查看ASP.NET MVC in Action book.。它有一个完整的章节专门介绍这个主题。他们建议并展示了如何使用AutoMapper将领域实体映射到ViewModels。

我还有一个here示例。

在BootStrapper中:

代码语言:javascript
复制
 Mapper.CreateMap<Building, BuildingDisplay>()
                .ForMember(dst => dst.TypeName, opt => opt.MapFrom(src => src.BuildingType.Name)); 

在控制器中:

代码语言:javascript
复制
  public ActionResult Details(int id)
        {
            var building = _db.Buildings.Find(id);

            if (building == null)
            {
                ViewBag.Message = "Building not found.";
                return View("NotFound");
            }

            var buildingDisplay = Mapper.Map<Building, BuildingDisplay>(building);
            buildingDisplay.BinList = Mapper.Map<ICollection<Bin>, List<BinList>>(building.Bins);

            return View(buildingDisplay);            
        }    
票数 2
EN

Stack Overflow用户

发布于 2013-04-07 22:09:18

我以前已经回答过这样的问题一次,如果你想看,这里是链接

代码语言:javascript
复制
http://stackoverflow.com/questions/15432246/creating-a-mvc-viewmodels-for-my-data/15436044#15436044

但是如果你需要更多的帮助,请告诉我:D这是你的视图模型

代码语言:javascript
复制
public class CategoryViewModel
{
    [Key]
    public int CategoryId { get; set; }
    [Required(ErrorMessage="* required")]
    [Display(Name="Name")]
    public string CategoryName { get; set; }
    [Display(Name = "Description")]
    public string CategoryDescription { get; set; }
    public ICollection<SubCategory> SubCategories { get; set; }
}

现在使用linq中的投影进行映射;

代码语言:javascript
复制
public List<CategoryViewModel> GetAllCategories()
{
    using (var db =new Entities())
    {
        var categoriesList = db .Categories
            .Select(c => new CategoryViewModel() // here is projection to your view model
            {
                CategoryId = c.CategoryId,
                CategoryName = c.Name,
                CategoryDescription = c.Description
            });
        return categoriesList.ToList<CategoryViewModel>();
    };
 }

现在你的控制器;

代码语言:javascript
复制
ICategoryRepository _catRepo;
    public CategoryController(ICategoryRepository catRepo)
    {
        //note that i have also used the dependancy injection. so i'm skiping that
        _catRepo = catRepo;
    }
    public ActionResult Index()
    {
        //ViewBag.CategoriesList = _catRepo.GetAllCategories();
           or
        return View(_catRepo.GetAllCategories());
    }

最后是你的观点;

代码语言:javascript
复制
@model IEnumerable<CategoryViewModel>
@foreach (var item in Model)
{
    <h1>@item.CategoryName</h1>
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15863201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档