我在使用Web Api时遇到麻烦,希望这里有人可以帮助我。

我有一个jQuery方法如下...

    function OnInsert(evt) {
        var truckId = $("#txtTruckId").val();
        var truckReg = $("#txtTruckReg").val();
        var description = $("#txtDescription").val();
        var condition = $("#txtCondition").val();
        var data = '{"obj":{"TruckId":"' + truckId + '","Reg":"' + truckReg +
                   '","Description":"' + description + '","Condition":"' + condition + '"}}';
        var json = JSON.stringify(data)

        $.ajax({
            url: '/api/Values',
            cache: false,
            type: 'POST',
            data: json,
            dataType: 'json',
            success: function (results) {
                $("#txtTruckId").val('');
                $("#txtTruckReg").val('');
                $("#txtDescription").val('');
                $("#txtCondition").val('');
                $.getJSON("api/Values", LoadCustomers);
                alert('Truck Added !');
            }
        })
    }


当我调试时,“数据”变量成功捕获数据。

然后,我的WebApi控制器中就有一个功能...

    // POST api/values
    public void Post(TruckInfo obj)
    {
        WebApiTestEntities db = new WebApiTestEntities();

        db.TruckInfoes.Add(obj);
        db.SaveChanges();
    }


但是,当我调试时,所有参数都显示一个空值。

我找到了这个:

http://kennytordeur.blogspot.co.uk/2012/12/web-api-passing-complex-type-in-json.html

哪些状态我需要Global.asax中的以下代码行,但这行不通。

ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());


我也找到了答案,但是在尝试更改我的代码后,看起来他们编写的代码仍然无法使用。

jQuery posts null instead of JSON to ASP.NET Web API

有谁能帮忙吗?

提前致谢

莱克斯

最佳答案

首先修复您的JSON:

var data = {
    truckId: truckId,
    reg: truckReg,
    description: description,
    condition: condition
};
var json = JSON.stringify(data);


然后确保您指定了正确的内容类型请求标头:

$.ajax({
    url: '/api/Values',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: json,
    success: function (results) {
        $("#txtTruckId").val('');
        $("#txtTruckReg").val('');
        $("#txtDescription").val('');
        $("#txtCondition").val('');
        $.getJSON("api/Values", LoadCustomers);
        alert('Truck Added !');
    }
});



  我找到了这个:
  
  http://kennytordeur.blogspot.co.uk/2012/12/web-api-passing-complex-type-in-json.html
  
  哪些状态我需要Global.asax中的以下代码行,但
  那没有用。


不不不。只要您正确设置JSON请求的格式就没有必要,Web API会将其绑定到您的模型。

09-25 18:17
查看更多