2011-08-11 2 views
0

이것이 가능한지 확실하지 않지만 여기에 내 상황이 있습니다. 내가 다시 형태로 게시 내 ProductModel을 사용하고오토 맵을 사용하여 내 모델의 일부가 아닌 뷰 모델에 특성을 어떻게 추가합니까?

public class ProductModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string CustomViewProperty { get; set; } 
} 

하고 난 상관 없어 :

public class Product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

내보기 모델은 다음과 같습니다

내가 이런 모델을 말해봐 또는 사용자 정의보기 속성이 필요합니다. 이 매핑은 automapper가 알 수없는 속성을 삭제할 때 제대로 작동합니다.

사용자 정의 속성을 한 방향으로 만 매핑하고 싶습니다. 즉

Mapper.CreateMap<Product, ProductModel>() 
     .ForMember(dest => dest.CustomViewProperty //???This is where I am stuck 

내가 알 수없는 속성을 덤프 아무것도 와이어를 통해 온다 automapper "ToModel"를 호출 할 때 어떤 일이 끝나는 것은.

이렇게하면됩니다.

var product = _productService.GetProduct(); 
var model = product.ToModel; 
model.CustomViewProperty = "Hello World"; //This doesn't go over the wire 
return View(model); 

이것은 가능합니까? 감사.

+1

ToModel 속성이 정확히 무엇입니까? –

+0

이것은 내 모델을 내 엔터티에 매핑하는 확장 메서드입니다. 제품이어야합니다. 모델(); – trevorc

답변

1

당신은 매핑되지 않은 속성을 무시해야합니다 :

Mapper.CreateMap<Product, ProductModel>() 
    .ForMember(dest => dest.CustomViewProperty, opt=>opt.Ignore()); 

를하거나지도 :

Mapper.CreateMap<Product, ProductModel>() 
    .ForMember(dest => dest.CustomViewProperty, opt=>opt.MapFrom(product=>"Hello world")); 
+0

나는이 접근법을 모두 시도하고 automapper가 내 사용자 정의 속성을 삭제합니다. 나는 '무시 (Ignore)'가 바로 그런 것을 의미한다고 믿습니다. – trevorc

+0

이것은 맞습니다. Jimmy는 ToModel 확장 프로그램을 두 번 확인해야만했습니다. 문제가 발생한 곳입니다. 무시하십시오. – trevorc

관련 문제