2013-10-22 29 views
0

我有一個標準類1財產上的Asp.Net的Web API:對控制器參數爲空,模式不被填充

public class RangeProperties 
{ 
    public string ItemNumber { get; set; } 
} 

這是進入到一個控制器作爲參數,像這樣的時刻

public Task<HttpResponseMessage> GetItems(RangeProperties rangeProperties) 

我在控制器中設置了一個斷點,所以我可以看到它進入但rangeProperties始終爲空。

我打電話,像這樣

http://localhost:8383/api/GetItems?ItemNumber=test 

控制器我試圖更新ItemNumber爲int和int?依然沒有。我也嘗試過不同的情況。

我原以爲rangeProperties不會爲空。

我希望有rangeProperties來容納一些屬性,然後這些屬性將從查詢字符串填充,如果我沒有發送的東西往下,那麼裏面的屬性將爲空。

但目前它甚至沒有甚至1財產的工作。

有人知道我在做什麼錯嗎?

雖然我正在使用asp.net web api,但我相信這也類似於asp.net mvc。

值得注意的一件事是,如果我用(字符串itemNumber)替換控制器它的作品。但對於複雜類型,它不是自動填充的。

感謝

回答

3

試試這個:

public Task<HttpResponseMessage> GetItems([FromUri]RangeProperties rangeProperties) 

默認的Web API中的請求體讀取請求的查詢字符串簡單類型和複雜類型。在你的情況下,你嘗試在查詢字符串中傳遞一個複雜類型的值,所以你必須強制web API使用FromUriAttribute從查詢字符串獲得RangeProperties值。

相反的屬性是FromBodyAttribute,以防您在發佈請求的正文中包含整數或字符串值。

+0

謝謝,現在正在工作。 – Martin

相關問題