Веб-API - Почему я должен использовать FormDataCollection?

Я только начинаю работать с Web API и в целом люблю его, но обнаружил, что чтение данных из запроса POST с помощью application /x-www-form-urlencoded является проблемой Я хотел посмотреть, есть ли лучший способ сделать это. Мое приложение (x-редактируемая форма) делает простой HTTP-запрос POST к моему контроллеру с тремя значениями: pk, name, value.

Запрос выглядит следующим образом:

 POST http://localhost/XXXX.Website/api/Category/Set HTTP/1.1
Host: localhost
Connection: keep-alive
Content-Length: 39
Accept: */*
Origin: http://localhost
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/XXXX.Website/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: ...

name=myPropertyName&value=myTestValue&pk=1

Мой метод действия в моем ApiController:

public HttpResponseMessage PostSet(FormDataCollection set) {}

Я могу читать значения формы из FormDataCollection, но кто-то может объяснить мне, почему я не могу просто написать:

public HttpResponseMessage PostSet(string name, string value, id pk) {}

Или сопоставить его с моделью?

Я думал, что веб-API должен был отображать параметры из значений формы?

5 голосов | спросил Martaver 15 AM00000060000002431 2013, 06:36:24

1 ответ


0

Вам нужно будет украсить параметр, используя атрибут FromBody. Но это будет работать только для одного параметра . да, я чувствую, что ты хмуришься. Примерно так должно работать:

public HttpResponseMessage PostSet([FromBody] string name) {}

Но есть и хорошие новости: вы можете привязать параметры своей формы к Model, используя [ModelBinder] атрибут.

Проверьте этот пост для подробностей.

ответил Srikanth Venugopalan 15 AM00000060000004131 2013, 06:51:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132