0

$.ajax() を使用して、サーバーにポスト コールを送信しています。タイプに POST を使用するとエラーが発生しますが、GET で実行すると完全に機能します。

問題は、POST を実行するときunitTotalに、サーバー側でパラメーターが null になることです。しかし、GET を実行すると、そのパラメーターは正しく渡されます。

ajax コードは次のとおりです。

    $.ajax({
    type: "POST",

    url: '/Sepet/SepeteTabloEkle',

    data: { "tabloId": tabloId, "en": en, "boy": boy, "accessoryIds": accessoryIds, "miscTypes": miscTypes, "unitTotal": total },

    traditional:true,

    success: function (data) {
    },
});

これが私のアクション定義です:

[HttpPost]
public void SepeteTabloEkle(int tabloId, int en, int boy, List<int> accessoryIds, List<string> miscTypes, decimal unitTotal )

POSTを使用した場合にサーバーが表示するエラーは次のとおりです。GET を使用すると、このエラーはスローされず、unitTotalうまく渡されます。

エラー:

パラメーター ディクショナリには、メソッド 'Void SepeteTabloEkle(Int32, Int32, Int32, System.Collections.Generic.List 1[System.Int32], System.Collections.Generic.List1[System.String], System. 「RenkliTablo.Controllers.SepetController」の Decimal)」。オプションのパラメーターは、参照型、null 許容型であるか、オプションとして宣言されている必要があります。

パラメータ。パラメータ名: パラメータ

4

2 に答える 2

1

これは、クライアントとサーバーの文化の違いによるものです。GET リクエストを使用する場合、既定のモデル バインダーは、ここで説明するようInvariantCultureに、クエリ文字列パラメーターを基になる型に解析するために常に使用します。POST を使用する場合、モデル バインダーは現在のカルチャを使用します。したがって、サーバーで小数点記号があり、POST 要求ではないカルチャを使用している場合、失敗します。,.

于 2012-06-28T06:13:18.200 に答える
0

Take away the traditional: true setting.

[data is] appended to the url for GET-requests. ... Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting

于 2012-06-27T23:50:40.077 に答える