我试图关注this example。
这是我的C#代码:
public class MyModel
{
int? ID { get; set; }
}
public class MyResourceController : ApiController
{
[HttpPost]
public MyModel MyPostAction(MyModel model)
{
return model;
}
}
这是我的JavaScript:
var data = { model: { ID: 1 } };
$http.post(
'/api/MyResource/MyPostAction',
JSON.stringify(data),
{
headers: {
'Content-Type': 'application/json'
}
}
);
当我在操作中设置断点时,model.ID
为null
而不是1
。如何发布复杂对象?
答案 0 :(得分:8)
您无需将数据包装到model
属性中:
var data = { ID: 1 };
$http.post('/api/MyResource/MyPostAction', data);
答案 1 :(得分:3)
将public
添加到MyModel
上的属性中修复它( facepalm )。
我最终在客户端上使用了这个:
var data = { ID: 1 };
$http.post('/api/MyResource/MyPostAction', data);
谢谢大家。
答案 2 :(得分:2)
$http.post('/api/MyResource/MyPostAction', data);
删除JSON.stringify并按原样发布数据。
您不需要指定json标头,因为它是post的默认值。
在服务器上:
如果您只使用json
,请从webapi中删除Xml//WebApiConfig.js
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);