0

我正在使用 $.ajax() 向服务器发送 post 调用。如果我使用 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”中。可选参数必须是引用类型、可空类型或声明为可选参数

范围。参数名称:参数

4

2 回答 2

1

这是因为客户端和服务器的文化差异。使用 GET 请求时,默认模型绑定器始终使用InvariantCulture将查询字符串参数解析为其基础类型,如此处所述。使用 POST 时,模型绑定器使用当前区域性。因此,如果您在小数点分隔符所在的服务器上使用文化,而不是.POST 请求失败。

于 2012-06-28T06:13:18.200 回答
0

去掉traditional: true设置。

[data is] 附加到 GET 请求的 url。...对象必须是键/值对。如果 value 是一个 Array,jQuery 会根据传统设置的 value 序列化多个具有相同 key 的值

于 2012-06-27T23:50:40.077 回答