Bre*_*ogt 8 mapping asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 valueinjecter
如何将属性从对象映射到具有不同属性名称的另一个对象?
我有一个Product看起来像这样的课程:
public class Product : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图模型看起来像:
public class ProductSpecificationAddViewModel
{
public int ProductId { get; set; }
public string ProductName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要做以下映射:
Product.Id => ProductSpecificationAddViewModel.ProductId
Product.Name =>ProductSpecificationAddViewModel.ProductName
Run Code Online (Sandbox Code Playgroud)
这是我的行动方法:
public ActionResult Add(int id)
{
Product product = productService.GetById(id);
// Mapping
//ProductSpecificationAddViewModel viewModel = new ProductSpecificationAddViewModel();
//viewModel.InjectFrom(product);
return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
如果您正在使用ValueInjecter,那么您将编写一个ConventionInjection.请参阅此处的第二个示例
public class PropToTypeProp : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.TargetProp.Name == c.Source.Type.Name + c.TargetProp.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
这个注入将从TSource.*的所有属性到TTarget.TSource +*,所以你这样做:
vm.InjectFrom<PropToTypeProp>(product);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2808 次 |
| 最近记录: |