1

我正在使用$.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始终为空。谁能看到我错过了什么?

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

4

2 回答 2

4

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

jQuery.ajaxSettings.traditional = true;

$.post('@Url.Action("CreateReview", "Home")',
    {
        id: 'GUID STRING HERE',
        ratings: [1, 2, 3],
        comment: 'adfef'
    });
于 2013-07-16T15:06:21.737 回答
0

尝试像这样指定 contentType:

$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
    ...
  }
})
于 2013-07-16T14:43:37.263 回答