1

を に送信しようとしてdynamic objectいますApiController。行にブレークポイントを設定すると、が常にreturn nullであることがわかります。parametersnull

AJAX呼び出し:

$(':checkbox').click(function (event) {
    var values = $('input[type="checkbox"]:checked').map(function () {
        return $(this).val();
    }).toArray();

    var product = {
        Name: $('#name2').val(),
        Price: $('#price2').val(),
        Category: $('#category2').val()
    };

    $.ajax({
        type: 'GET',
        url: '/api/filter',
        data: JSON.stringify( product ),
        contentType: 'application/json',

        success: function (data) {
            //alert("succeeded");
        },
        error: function (err, data) {
            alert("Error " + err.responseText);
        }
    });

});

Controller:_

[HttpGet]
public IEnumerable<Products> GetAllProducts(dynamic parameters)
{
    return null;
}

ここで何が間違っているのか分かりますか?

4

1 に答える 1

2

編集:- 元の回答を GET から POST に変更しました。

投稿したコードが FilterController にあると仮定すると、GetAll メソッドは通常、パラメーターをとらず、すべての製品を取得するために使用されます。そこにダイナミックを入力したい場合は、そのように POST に変更する必要があります..

$.ajax({
        type: 'POST',
        url: '/api/filter/GetAllProducts,
        data: JSON.stringify( product ),
        contentType: 'application/json',

        success: function (data) {
            //alert("succeeded");
        },
        error: function (err, data) {
            alert("Error " + err.responseText);
        }
    });

次に、コントローラーを HttpPost 属性で飾ります

[HttpPost]
public IEnumerable<Products> GetAllProducts(dynamic parameters)
{
    return null;
}
于 2013-11-01T19:38:01.437 に答える