为什么Web Api无法绑定System.Version参数?

时间:2012-09-25 23:54:31

标签: asp.net-web-api model-binding

更新:已解决!这里没什么可看的,请继续: - )

我有ApiController方法,它采用System.Version参数。该参数作为JSON在请求体中传递。这是发送的内容:

{   “少校”:0,   “轻微”:7,   “建立”:0,   “修订版”:0,   “MajorRevision”:0,   “MinorRevision”:0 }

路由工作 - 我的方法被调用 - 但参数有一个空的Version对象(所有值为零)。为什么呢?

这是控制器方法的声明:

    // POST api/service/details
    [HttpPost]
    [ActionName("Details")]
    public ServiceDto Get(Version version)
    {
    }

2 个答案:

答案 0 :(得分:1)

为了防止其他人试图回答这个问题,答案是System.Version类在其成员上没有公共setter。因此,它无法正确反序列化,并保持其初始状态。我不得不使用我自己的“版本”类,该类具有可公开设置的成员,并且工作正常。

答案 1 :(得分:0)

我不认为[Serializable]可能是一个问题。

尝试将'Content-Type:application / json'作为客户端的标题。 也可以像这样使用[FromBody]属性。

[HttpPost]
[ActionName("Details")]
public ServiceDto Get([FromBody]Version version)
{
}