我正在使用$.post()将整数值数组发布到我的控制器。

这是我构造数组的方法:

var ratings = [];
$('#ratings input[name=newReviewRatings]').each(function () {
    ratings.push($(this).val());
});


这是我将其发布到控制器的方式:

$.post('@Url.Action("CreateReview", "Provider")',
{
    id: providerId,
    ratings: ratings,
    comment: comment
});


这是发布的表单数据:


  {id = 437baf29-4196-4966-88de-a8fde87ef68d&ratings%5b%5d = 1&ratings%5b%5d = 2&ratings%5b%5d = 3&ratings%5b%5d = 4&ratings%5b%5d = 5&comment = Comments}


这是我的控制器签名:

public ActionResult CreateReview(Guid id, int[] ratings, string comment)
{
    // ....
}


似乎应该是正确的,但是ratings始终为null。谁能看到我所缺少的东西?

我也尝试了string[] ratings并得到了相同的结果。我还看到了使用JSON.stringify(ratings)传递数组的建议,但这似乎也无济于事。

最佳答案

除了将发布数据转换为json外,还可以将traditional参数设置为true。这将导致jQuery对MVC使用正确的发布格式。

jQuery.ajaxSettings.traditional = true;

$.post('@Url.Action("CreateReview", "Home")',
    {
        id: 'GUID STRING HERE',
        ratings: [1, 2, 3],
        comment: 'adfef'
    });

10-06 01:06