2014-09-05 60 views
1

我無法在ASP.NET WebAPI 2應用程序中訪問通過POST提交的參數。我甲肝很瑣碎控制器和動作,這只是抓住了參數,並返回200如何將表單數據發佈到ASP.NET WebAPI 2?

public IHttpActionResult Post([FromBody] string foo) 
{ 
    return Ok(); 
} 

而且我通過捲曲

發出請求
curl http://localhost:24196/api/checkpoints -XPOST -d foo=bar 

參數最終被null。當我用jQuery嘗試這個時會發生同樣的情況。

$.post("http://localhost:24196/api/checkpoints", { foo: "bar" }) 

I've found a post that seems to describe this issue,但我不知道這是真的來解決這個問題(使用=編碼)的正確方法。

與WebAPI服務交談的正確/標準方式是什麼,以及參數綁定在這些情況下如何實際工作?

回答

2

如鏈接中所述,FromBody預計數據以某種方式=foo - re:沒有「key」。所以:

捲曲:

curl -X POST -d "=bar" http://localhost/controller 

的Jquery:

var _data = { "": "bar" }; 

更新:

參考此行爲:Sending simple types

默認情況下,Web API會嘗試從請求URI獲取簡單類型。 FromBody屬性告訴Web API從請求主體讀取值。

...如果您需要從請求主體獲取多個值,請定義複雜類型。

其次,客戶端需要使用以下格式發送值:

=值

H個...

+0

怎樣的內容,如果它不是隻是一個字符串編碼,但結構?另外,我在哪裏可以找到關於此的文檔?我似乎不能谷歌任何合理的。 – 2014-09-05 19:28:09

+0

@JakubArnold它特定於'FromBody'(又名「簡單類型」) - 用鏈接引用更新 - Hth ... – EdSF 2014-09-05 19:37:57