ASP.NET MVC4 Web Api参数绑定POST

时间:2015-06-01 15:04:35

标签: c# asp.net asp.net-mvc asp.net-mvc-4 url-encoding

我正在编写Web Api服务,以便从客户端API的回调中接收数据。由于他们将传入服务指定为接收JSON,我假设他们的回调也会以JSON格式发布数据。但是,在测试我的API时,我发现它们实际上是在发布表单数据。

这本身并不是问题,因为API接受多种格式的POST数据。但是,当接受数据为JSON时,我可以这样做:

public IHttpActionResult Post(Message message)
{
    ...
}

public class Message 
{
    [JsonProperty("name")]
    public string NameParameter { get; set; }
}

这允许我发布{ "name": "Dave" }之类的json,并将我的处理程序中的参数称为message.NameParameter

但是,当数据作为表单数据(application/x-www-form-urlencoded)收到时,例如name=DaveJsonProperty属性不执行任何操作(鉴于属性名称,这一点并不令人惊讶),{{ 1}}最终为message.NameParameter

当然,我可以更改null类中的属性名称以匹配POST参数名称,但在某些情况下,POST参数的名称不符合我们的编码标准,所以我会更喜欢通过属性指定绑定的方法,与处理JSON数据的方式相同。

0 个答案:

没有答案