1

私はWebApiに問題があり、ここの誰かが私を助けてくれることを望んでいました。

私は次のような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 !');
            }
        })
    }

'data'変数がデータを正常にキャプチャすることをデバッグすると。

次に、WebApiコントローラーに関数があります...

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

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

ただし、デバッグすると、すべてのパラメーターにnull値が表示されます。

私はこれを見つけました:

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

Global.asaxに次のコード行が必要であると述べていますが、それは機能していません。

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

私はまた、この種の答えを思い付くのを見つけましたが、私のコードを変更しようとした後、彼らが書いたコードがまだ機能していないように見えます。

jQueryはJSONではなくnullをASP.NETWebAPIに投稿します

誰かが助けることができますか?

前もって感謝します

レックス

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リクエストを適切にフォーマットする限り、WebAPIはそれをモデルにバインドします。

于 2013-02-26T09:42:05.190 に答える