10

我正在为 Asp.Net 中的“新”WebApi 苦苦挣扎……

我只想发布一些Json,但它没有反序列化我的数据......我做错了什么?!

控制器类

    public class UtilityController : ApiController
    {
        [HttpPost]
        public string Bla(Bla bla)
        {
            return "bla";
        }
    }

布拉类:

    public class Bla
    {
        public string Een { get; set; }
        public string Twee { get; set; }
    }

接口配置:

    config.Routes.MapHttpRoute(
        名称:“默认API”,
        routeTemplate: "api/{controller}/{Action}/{id}",
        默认值:新 { id = RouteParameter.Optional }
    );

发布数据:

    var bla = $.parseJSON('{"Een":"UNO","Twee":"DUE"}');
    $.ajax({
    类型:“发布”,
    url: "/api/utility/Bla",
    数据:{Bla:bla},
    数据类型:“json”
    }).done(函数(味精){
    alert("数据保存:" + msg);
    });

4

3 回答 3

22

我做错了什么!

您没有发送 JSON 请求。您正在发送application/x-www-form-urlencoded请求。

因此,请确保您发送的是真正的 JSON 请求:

var bla = { "Een": "UNO", "Twee": "DUE"};
$.ajax({
    type: 'POST',
    url: '/api/utility/Bla',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(bla),
}).done(function( msg ) {
    alert( "Data Saved: " + msg );
});

请注意我如何将正确的标contentType头设置为服务器发送。application/jsonJSON.stringifydataType: 'json'

于 2012-10-15T10:52:04.393 回答
0

bla参数可能需要[ModelBinder]在您的 Post 方法上标记:

[HttpPost]
public string Bla([ModelBinder]Bla bla)
{
    return "bla";
}
于 2012-10-15T10:53:38.603 回答
-1

您可以尝试更改此行:

data: {Bla : bla},

对此:

data: bla,
于 2012-10-15T10:51:54.017 回答