2013-07-16 37 views
1

我正在使用$.post()向控制器发布整数值数组。传递给收到的控制器的数组为空NULL

下面是如何构建我的数组:

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 &评分%5b%5d = 1 &评分%5b%5d = 2 &个收视%5B%5D = 3个&收视%5B%5D = 4个&收视%5B%5D = 5 &评论=评论}

这是我的控制器签名:

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

这似乎像这应该是正确的,但ratings始终为空。任何人都可以看到我失踪的东西吗?

我也试过string[] ratings并得到了同样的结果。我也看到一个建议,使用JSON.stringify(ratings)来传递数组,但是这似乎也没有帮助。

+0

可能重复http://stackoverflow.com/questions/5785428/in-asp-net-mvc-how -can-i-pass-an-array-of-integers-as-a-parameter) – BNL

+0

@BNL没有冒犯,但我不认为这是完全重复的。 –

回答

4

在ADITION到后期数据转换成JSON,您还可以设置traditional参数去实现。这将导致jQuery为MVC使用正确的帖子格式。

jQuery.ajaxSettings.traditional = true; 

$.post('@Url.Action("CreateReview", "Home")', 
    { 
     id: 'GUID STRING HERE', 
     ratings: [1, 2, 3], 
     comment: 'adfef' 
    }); 
的[在asp.net MVC,我怎样才能通过整数数组作为参数](
+0

是的,这有效。谢谢。 –

0

尝试指定的contentType是这样的:

$.ajax({ 
    url:url, 
    type:"POST", 
    data:data, 
    contentType:"application/json; charset=utf-8", 
    dataType:"json", 
    success: function(){ 
    ... 
    } 
}) 
+0

仅当您将数据首先转换为json时。 – BNL

+0

此答案不完整。但是我可以通过将'data'设置为'JSON.stringify({id:providerId,ratings:ratings,comment:comment})'来实现它。 –

相关问题