我正在使用 $.post()
将整数值数组发布到我的 Controller 。
这是我构建数组的方式:
var ratings = [];
$('#ratings input[name=newReviewRatings]').each(function () {
ratings.push($(this).val());
});
这是我将其发布到 Controller 的方式:
$.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}
这是我的 Controller 签名:
public ActionResult CreateReview(Guid id, int[] ratings, string comment)
{
// ....
}
这似乎应该是正确的,但 ratings
始终为 null。谁能看到我错过了什么?
我也尝试了 string[] ratings
并得到了相同的结果。我还看到了使用 JSON.stringify(ratings)
传递数组的建议,但这似乎也没有帮助。
最佳答案
除了将 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'
});
关于c# - 传递给 Controller 的数组接收为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17679543/