我以下面的形式发送一个请求到服务器:
http://localhost:12345/api/controller/par1/par2
该请求正确解析为以下方法:
[HttpPost] public void object Post(string par1,string par2)
但是,我通过请求内容传递额外的数据。如何检索这些数据?
为了举例,让我们说,请求是从以下形式发送的:
<form action="http://localhost:12345/api/controller/par1/par2" method="post"> <input type="hidden" name="data" value="value" /> <input type="submit" name="submit" value="Submit" /> </form>
解决方法
从
answer在这个问题:
How to get Post Values with asp.net webapi
How to get Post Values with asp.net webapi
> Autoparse使用参数绑定;注意,动态由JToken组成,因此.Value访问器。
public void Post([FromBody]dynamic value) { var x = value.var1.Value; // JToken }
> Read就像Request.RequestUri.ParseQueryString()[key]
public async Task Post() { dynamic obj = await Request.Content.ReadAsAsync<JObject>(); var y = obj.var1; }
>与#2相同,只是不是异步的(?),所以你可以在一个帮助方法中使用它
private T GetPostParam<T>(string key) { var p = Request.Content.ReadAsAsync<JObject>(); return (T)Convert.ChangeType(p.Result[key],typeof(T)); // example conversion,could be null... }
警告 – 期望媒体类型应用程序/ json为了触发JsonMediaTypeFormatter处理。