2

我试图按照这个例子

这是我的 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不是. 我怎样才能发布一个复杂的对象?null1

4

3 回答 3

8

您不需要将数据包装到model属性中:

var data = { ID: 1 };
$http.post('/api/MyResource/MyPostAction', data);
于 2013-08-06T14:24:33.827 回答
3

添加publicMyModel固定它的属性(facepalm)。

我最终在客户端上使用了它:

var data = { ID: 1 };
$http.post('/api/MyResource/MyPostAction', data);

感谢大家。

于 2013-08-06T14:35:07.450 回答
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);
于 2013-08-06T14:18:13.690 回答