首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将模型转换为ViewModel

将模型转换为ViewModel
EN

Stack Overflow用户
提问于 2014-01-09 16:48:40
回答 2查看 6K关注 0票数 1

我为我的桌子主人准备了一个模型

代码语言:javascript
复制
namespace MyApp.Models
{
    public partial class Owner
    {
        public int owner_id { get; set; }
        public string firstname { get; set; }
        public string lastname { get; set; }
        public string address { get; set; }
        public string city { get; set; }

        public virtual User User { get; set; }
    }
}

然后我有了我的ViewModel

代码语言:javascript
复制
public partial class OwnerData
{
    public string firstname { get; set; }
    public string lastname { get; set; }
    public string address { get; set; }
}

我的控制器

代码语言:javascript
复制
    public ActionResult Index()
    {
        //Create the object Owner based on the User Identity
        Owner owner = CustomDbFunctions.GetUserEntity(User, db).Owner;

//New instance of the ViewModel
        OwnerData ownerData = new OwnerData();

        ownerData.lastname = owner.lastname;
        ownerData.firstname = owner.firstname;
        ownerData.address = owner.address;

            return View(ownerData);

    }

有一种更简单的方法可以将我的owner转换成ownerData,而无需重写对象的每一个属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-10 13:20:58

我想我用Automapper解决了这个问题

代码语言:javascript
复制
public ActionResult Index()
{
    //Create the object Owner based on the User Identity
    Owner owner = CustomDbFunctions.GetUserEntity(User, db).Owner;

    Mapper.CreateMap<Owner, OwnerData>();
    OwnerData ownerData = Mapper.Map<Owner, OwnerData>(owner);

  return View(ownerData);
}

或者如果您喜欢动态函数

代码语言:javascript
复制
    static TDestination GenerateMappingTable<TSource, TDestination>(TSource inputModel)
    {
        Mapper.CreateMap<TSource, TDestination>();
        return Mapper.Map<TSource, TDestination>(inputModel);
    }

要安装Automapper,只需执行

代码语言:javascript
复制
PM> Install-Package AutoMapper

来自包管理器控制台。

票数 3
EN

Stack Overflow用户

发布于 2014-01-09 16:53:22

您可以使用对象初始化器.That使其更简单,但我不确定这是您想要的

代码语言:javascript
复制
OwnerData ownerData = new OwnerData  { 
                          lastname = owner.lastname;
                          firstname = owner.firstname;
                          address = owner.address;
                          };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21026270

复制
相关文章

相似问题

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