2015-10-09 3 views
0

я в настоящее время размещения на моем веб-API, как это:Передача нескольких параметров функции client.PostAsJsonAsync

client.PostAsJsonAsync ("апи/контроллер/methodincontroller", listOfProductObject);

Я хотел бы знать, как в дополнение к списку моего объекта Product я также могу отправить дополнительную строку методу в моем контроллере, не делая это свойство моей модели продукта.

Если это не возможно, я должен сделать модель, которая имеет 2 свойства только для этой цели:

IList<Product> productList 
string additionalParam 
+0

Можете ли вы добавить еще один параметр в свой метод контроллера? – Ric

+0

Да, например: public HttpResponseMessage MyMethod (IList productList, строка дополнительнаяParam). Но как я могу заполнить этот параметр из моего другого приложения при вызове PostAsJsonAsync. –

+1

вы можете добавить один к URI, т. Е. 'Api/controller? AnotherParam = something', а другой использовать атрибут body. http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api, поэтому он будет выглядеть так: 'client.PostAsJsonAsync (" api/контроллер/methodincontroller? дополнительныйParam = "+ myParam, listOfProductObject);' – Ric

ответ

2

Ok так что я получил образец работает без использования PostAsJsonAsync:

Установка :

string json = JsonConvert.SerializeObject(new List<somemodel> { new somemodel() }); 
StringContent sc = new StringContent(json, Encoding.UTF8, "application/json"); 

HttpClient c = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }); 
var x = c.PostAsync("http://localhost:58893/api/values?additionalParam=" + "test", sc).Result; // returns 200 

И контроллер:

public IHttpActionResult Post([FromUri] string additionalParam, [FromBody] List<somemodel> models) 

Очевидно, что это работает для моих образцов объектов somemodel, но вы получаете идею.

+0

Это работает отлично. Мой код контроллера выглядит точно так же, как ваш, но код в разделе настройки выглядит так: Task response = client.PostAsJsonAsync ("api/mycontroller/controllermethod? ДополнительнаяParam =" + "test", productList); Есть ли какая-то особая причина, по которой вы добавили дополнительный код в разделе настройки? Я уверен, что мой productList автоматически преобразуется в Json при отправке. В отладчике то, что я сейчас, похоже, работает. –

+0

Да, потому что у меня нет «PostAsJsonAsync», и nuget не позволяет мне получить его по какой-то причине на данный момент, я просто добавил код, чтобы заставить его работать и проходить в 'json', но это в основном то же самое! – Ric

+0

Поблагодарили еще раз! –

Смежные вопросы