假設ApiController具有多個參數的操作:行程多複雜的參數ASP.NET的WebAPI
[HttpPost]
public void AddAddress(Person person, Address address, int simple)
或類似的東西。 現在我嘗試發送與內容類型application/json
和JSON這樣的POST請求:
{
person: {...}, address: {..}, simple: 1
}
只是假設它是有效的JSON)
或JSON數組是這樣的: [person, address, simple]
但WebApi不會識別這個,並告訴我它找不到該動作,因爲它不支持json請求中的多個參數。
我正在從使用HttpClient的C#客戶端執行此操作,我們希望使用json執行發佈請求。我想使用WebApi.Client包,它爲HttpClient提供了幾個有用的擴展,但我們有一個可移植的庫項目(webapi客戶端不支持)。
我將如何去支持此功能?
我試圖使用自定義的ActionFilter,它永遠不會運行,因爲它無法預先找到操作。我嘗試了MediaTypeFormatter,它不知道上下文和參數,還嘗試了ModelBinder,它似乎只在每個參數的基礎上,並不總是得到執行。
謝謝!
這會是常見的解決方案的新模式類,雖然在我們的特例中,這意味着我們必須在運行時生成這個模型類(ApiController在DynamicAssembly中)。我想我可以使用JObject或其他東西,但是我們會放棄驗證功能。所以我認爲我們需要真正支持多個複雜的論點。 –
如果是這種情況,您可能需要查看此博客文章,瞭解如何擴展Web API以支持該行爲。 http://blogs.msdn.com/b/jmstall/archive/2012/04/18/mvc-style-parameter-binding-for-webapi.aspx –
謝謝,我們決定爲自定義的方法生成一個重載模型作爲單一的參數,因爲另一個解決方案會與json序列化和東西有很大的關係。 –