1

我正在开发一个 WebAPI 服务并且遇到了一个奇怪的问题。使用构造函数调用 ViewModel 时,为什么返回类型从 XML 更改为 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" };
}

查看模型类;

[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?
    }
}
4

1 回答 1

1

这似乎是序列化程序的一些奇怪行为。将默认的空构造函数与其他构造函数一起添加到模型中:

public MyViewModel()
{
}

public MyViewModel(Product product)
{
}

但我个人会使用视图模型。一个真实的。不是您将域模型传递给的某种混合体。只需有一个简单的 POCO 作为视图模型。以及将从域模型映射的映射层。

于 2013-06-07T12:32:57.117 回答