2013-06-07 1 views
1

WebAPI 서비스를 개발 중이며 호기심이 많은 문제가 발생했습니다. 생성자를 사용하여 ViewModel을 호출 할 때 반환 유형이 XML에서 JSON으로 변경되는 이유는 무엇입니까?사용자 지정보기 모델에서 생성자를 호출하면 출력 형식이 JSON으로 변경됩니다.

컨트롤러의 코드;

// GET api/Product/5 
public MyViewModel GetProduct(Int64 id) 
{ 
    // without a constructor this returns an xml 
    //return new MyViewModel() { Name = "123" }; 

    // this changes type to json 
    Product product = new Product(); 
    return new MyViewModel(product) { Name = "123" }; 
} 

View Model class;

[XmlRoot(ElementName = "ARequest", Namespace = "http://myschema.com/schemas/myviewmodel.xsd")] 
public class MyViewModel : Product 
{ 
    public string Name { get; set; } 

    public MyViewModel(Product product) 
    { 
     // this constructor causes the type to switch from 
     // xml to json - why? 
    } 
} 

답변

1

이것은 시리얼 라이저의 이상한 동작입니다. 다른 생성자와 함께 기본 빈 생성자를 모델에 추가하십시오.

public MyViewModel() 
{ 
} 

public MyViewModel(Product product) 
{ 
} 

개인적으로 저는 뷰 모델을 사용합니다. 진짜. 도메인 모델을 통과하는 하이브리드가 아닙니다. 뷰 모델로 간단한 POCO 만 있으면됩니다. 그리고 도메인 모델에서 매핑 할 매핑 레이어.

관련 문제