如何从Angular $ http服务将数据发布到Web API控制器?

时间:2013-08-06 14:15:06

标签: c# javascript angularjs asp.net-web-api

我试图关注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.IDnull而不是1。如何发布复杂对象?

3 个答案:

答案 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);