モデルバインダーはJSONオブジェクトの配列をサポートしていませんか?以下のコードは、ajaxポストの一部として単一のJSONドメインオブジェクトを送信するときに機能します。ただし、JSONドメインオブジェクトの配列を送信する場合、actionパラメータはnullです。JSONオブジェクトの配列をMVC3アクションメソッドにjQuery ajax経由でポストする
var domains = [{
DomainName: 'testt1',
Price: '19.99',
Available: true
}, {
DomainName: 'testt2',
Price: '15.99',
Available: false
}];
$.ajax({
type: 'POST',
url: Url.BasketAddDomain,
dataType: "json",
data: domains,
success: function (basketHtml) {
},
error: function (a, b, c) {
alert('A problem ocurred');
}
});
これは、アクションメソッドである:これを行うことが可能である場合
public ActionResult AddDomain(IEnumerable<DomainBasketItemModel> domain)
{
...
任意のアイデア?
EDIT
@Milimetric
あなたのソリューションの作品!しかし、これは私のせいですが、私が実証したコードは私の問題の本当のコードではなく、わかりやすい同等のコードを表示しようとしていました。
私は実際に、その後いくつかのDOM要素をinteratingし、データとしてこの配列を掲示、アレイにJSONオブジェクトを押して、配列を作成しています...
var domains = [];
$(this).parents('table').find('input:checked').each(function() {
var domain = {
DomainName: $(this).parent().parent().find('.name').html(),
Price: $(this).parent().parent().find('.price span').html(),
Available: $(this).parent().parent().find('.available').html() == "Available"
}
domains.push(domain);
});
$.ajax({
type: 'POST',
url: Url.BasketAddDomain,
dataType: "json",
data: { domain: domains },
success: function (basketHtml) {
},
error: function (a, b, c) {
alert('A problem ocurred');
}
});
関連 - http://stackoverflow.com/questions/2515773/ajax-post-of-javascript-string-array-to-jsonresult-as -liststring-always-reply – ChrisF