2012-06-14 61 views
5

我有我的API控制器的一個POST方法,需要一個字符串值:如何在ASP.NET WebAPI RC中綁定簡單的POST值?

public string Post([FromBody] string foo) { 
    return(fooOracle.ValidateFoo(foo) ? "success" : "failure"); 
} 

我張貼這與POST請求的身體:

foo=123412341234 

(即它是一個普通的HTTP POST,您可以通過提交瀏覽器表單以及使用HTTP客戶端來啓動)

在WebAPI的發佈候選版本中,它已默默停止工作 - 它只是不會再綁定foo。要獲取該代碼的工作,我已經受夠了這種更換方法:

public string Post(FormDataCollection form) { 
    var foo = form.Get("foo"); 
    return(fooOracle.ValidateFoo(foo) ? "success" : "failure"); 
} 

工作,但它有點亂,涉及到相當多的管道,以測試比以前的版本。

我錯過了一些微妙的變化,或者[FromBody]綁定語法已被棄用,以支持這種相當冗長的綁定語法?該屬性仍然存在,但它真的不清楚它在RC版本中的實際功能。

+0

在這裏問你的問題:http://aspnetwebstack.codeplex.com/discussions/359687 – Aliostad

回答

1

它實際上有一個微妙的變化,它不能處理像'foo = 123412341234'這樣的輸入,但會處理'= 123412341234'作爲輸入。你可以讓客戶發送它嗎?

如果不是,您可以創建一個如下的包裝類,並使您的操作期望stringwrapper作爲參數而不是String本身。

Class StringWrapper {public string Foo {get;設置;}}

相關問題