我刚刚开始使用 Web API,并且普遍喜欢它,但是发现使用 'application/x-www-form-urlencoded' 从 POST 请求中读取数据是一种痛苦。我想看看是否有更好的方法来做到这一点。我的应用程序(一个可编辑的 x 表单)向我的控制器发出一个简单的 HTTP POST 请求,其中包含 3 个值: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 中的 Action 方法是:
public HttpResponseMessage PostSet(FormDataCollection set) {}
我可以很好地从 FormDataCollection 中读取表单值,但是有人可以向我解释为什么我不能简单地写:
public HttpResponseMessage PostSet(string name, string value, id pk) {}
或者将其映射到模型?
我认为 Web API 应该能够从表单值映射参数?