如何根据模型名称将模型转换为它的viewmodel

时间:2015-04-22 23:34:55

标签: c# asp.net-mvc model viewmodel

我想找出一些我不确定是否有可能的东西。我的目标是我有一个名为convertToPersonModel的扩展方法,它将PersonViewModel复制到PersonModel。是否有可能我可以更改参数以接受任何ViewModel并将其转换为它的正常模型。例如,我可以在一个方法中将EmployeeViewModel传递给EmployeeModel,或者将RoleViewModel传递给RoleModel。

这是我的扩展方法:

public static PersonModel ConvertToPersonModel(this PersonViewModel viewModel) 
{

    var model = new Product(){
        FirstName = viewModel.FirstName;
        LastName = viewModel.LastName;
    }
  return model;
}

因此,目标是能够传入任何视图模型并找出相关模型的属性(正常模型具有哪些属性),并根据它所依赖的视图模型/模型对来分配这些值。这可能会令人困惑,如果您需要更多说明,请告诉我。

某些事情如:

public static Model ConvertToModel(this ViewModel viewModel) 
{
    var model = new findWhichModelisRelatesToViewModel(){
        1stproperty = viewModel.relevantProperty;
        2ndproperty = viewModel.relevantProperty;
    }
  return model;
}

使用Model作为与视图中发送模型相关的模型。

1 个答案:

答案 0 :(得分:1)

您不可能创建一个非泛型扩展方法来处理从所有域模型到视图模型的转换,反之亦然。相反,你在上面的评论中所要求的是告诉哪个viewmodel对应于你想要的模型和地图,而完美的lib是AutoMapper

首先声明一张地图:

Mapper.CreateMap<Order, OrderDto>();

然后你得到它映射:

OrderDto dto = Mapper.Map<OrderDto>(order);

你也可以控制这个