ASP.Net MVC 3 - Привязка модели JSON к массиву

Я использую ASP.Net MVC 3 и, следуя списку функций, поддерживаемых в at, я должен иметь возможность получить привязку модели json по умолчанию, работающую из коробки. . Однако мне не удалось привязать массив / коллекцию из json к параметру метода действия. Хотя я получил простую привязку объекта json, работающую правильно. Был бы очень признателен, если бы здесь эксперт мог сказать мне, что я делаю не так.

Вот код:

Сначала код на стороне сервера:

// Метод действия

 public JsonResult SaveDiscount(IList<Discount> discounts)
    {
       foreach(var discount in discounts)
       {
       ....
       }
    }

// Просмотр модели

public class Discount
{
    string Sku{get; set;}
    string DiscountValue{get; set;}
    string DiscountType{get; set;}

}

/ / client side (jquery / js):

    var discount = {};
    var jsondatacoll = [];
    $('#discountgrid tr').each(function () {

        sku = $(this).find("td").eq(1).html();
        discValue = $(this).find('.discval').val();
        discType = $(this).find('.disctype').val();

        discount = { Sku: sku, DiscountType: discType, DiscountValue: discValue};
        jsondatacoll.push(discount);
        }
    })
    if (jsondatacoll.length > 0) {
        var catalogDiscount = JSON.stringify(jsondatacoll);

        $.ajax(
        {
            url: '/url/savediscount',
            type: 'POST',
            data: catalogDiscount,
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function (data, textStatus, jqXHR) {
                ...                   
            },
            error: function (objAJAXRequest, strError) {                 
               ...
            }
        }
     );   //ajax
    }

Я проверил полезную нагрузку json в скрипте, и это выглядит, как показано ниже:

[
    {"Sku":"sku1","DiscountType":"type1","DiscountValue":"10"},     
    {"Sku":sku2","DiscountType":"type1","DiscountValue":"12"}, 
    {"Sku":"sku3","DiscountType":"type2","DiscountValue":"40"}
]

А на стороне сервера я вижу IList Скидки заполнены 3 пустыми объектами Discount - это означает, что свойства нулевые, но длина аргумента скидки равна 3.

17
задан casperOne 1 September 2011 в 01:32
поделиться