尝试创建一个类作为数据模型,然后发送一个JSON对象,其属性与数据模型类的属性匹配。(注意:我已经测试过这个方法,并且在我今天刚下载的最新MVC 4 RC 2012中可用。)
public HttpResponseMessage Post(ValueModel model)
{
return Request.CreateResponse<string>(HttpStatusCode.OK, "Value Recieved: " + model.Value);
}
public class ValueModel
{
public string Value { get; set; }
}
以下 JSON 对象通过 HTTP POST 请求发送,内容类型为 application/json
{ "value": "In MVC4 Beta you could map to simple types like string, but testing with RC 2012 I have only been able to map to DataModels and only JSON (application/json) and url-encoded (application/x-www-form-urlencoded body formats have worked. XML is not working for some reason" }
我认为你需要创建一个数据模型类的原因是因为简单的值被认为来自URL参数,而单个复杂的值被认为来自请求体。虽然它们有
[FromBody]
和
[FromUrl]
属性,但使用
[FromBody] string value
对我来说仍不起作用。似乎他们仍在解决许多错误,所以我相信这将来会改变。
编辑:
在请求体中成功使用XML。默认的XML序列化程序已更改为DataContractSerializer而不是XmlSerializer。将以下行放入Global.asax文件中即可解决此问题(参考
链接)。
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true