传递给控制器的数组接收为NULL
本文关键字:NULL 数组 控制器 | 更新日期: 2023-09-27 18:22:42
我正在使用$.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%5%b%5d=3&ratings%5%b%5%d=4&rates%5%b%5d=5&comment=Comments}
这是我的控制器签名:
public ActionResult CreateReview(Guid id, int[] ratings, string comment)
{
// ....
}
这似乎应该是正确的,但ratings
总是空的。有人能看到我缺了什么吗?
我也尝试了string[] ratings
,得到了同样的结果。我还看到了使用JSON.stringify(ratings)
传递数组的建议,但这似乎也没有帮助。
除了将post数据转换为json之外,还可以将traditional
参数设置为true。这将导致jQuery为MVC使用正确的post格式。
jQuery.ajaxSettings.traditional = true;
$.post('@Url.Action("CreateReview", "Home")',
{
id: 'GUID STRING HERE',
ratings: [1, 2, 3],
comment: 'adfef'
});
尝试这样指定contentType:
$.ajax({
url:url,
type:"POST",
data:data,
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(){
...
}
})