2012-09-25 28 views
2

UPDATE:解決!這裏沒什麼可看的,請繼續:-)爲什麼WebApi無法綁定System.Version參數?

我有一個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) 
    { 
    } 
+1

啊,這就是爲什麼......它不是可序列化的:http://stackoverflow.com/q/2085866/98422 –

回答

1

爲了防止其他人試圖回答這個問題,答案是,System.Version類有其成員沒有公共setter方法。因此它不能被正確地反序列化,並保持其初始狀態。我不得不使用我自己的「版本」類擁有可公開設置的成員,並且運行良好。

0

我不認爲[Serializable接口]可能是一個問題。

嘗試將'Content-Type:application/json'作爲客戶端的頭部。 也使用這樣的[FromBody]屬性。

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

我已經有了這兩件事情。我真的不認爲我得到的行爲僅僅是由於Version類的成員沒有公共setter。因此它不能被正確地反序列化,並保持其初始狀態。當我從使用System.Version切換到我自己的Version類副本時,它工作正常。 –

相關問題