1

我在使用 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 将 null 而不是 JSON 发布到 ASP.NET Web API

有人能帮忙吗?

提前致谢

莱克斯

4

1 回答 1

4

首先修复您的 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 会将其绑定到您的模型。

于 2013-02-26T09:42:05.190 回答