c# - 传递给 Controller ​​的数组接收为 NULL

标签 c# javascript jquery asp.net-mvc

我正在使用 $.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/

相关文章:

c# - 从 YouTube 获取 FLV URL

jquery - 函数调用时的scrollTop 动画多个

javascript - 在 contenteditable div 中突出显示的文本上方显示弹出窗口?

javascript - 如何在更改时仅显示一次事件?

c# - 如何查询 C# 字典并返回一组特定的值

c# - C# 中的局部变量

c# - 在 Entity Framework 6 中对 ICollections 进行排序

javascript - SyntaxError : JSON. 解析:意外的数据结束

asp.net - 在 asp.net 中回发后保留 anchor

javascript - Magento 2 如何应用 jquery 获取结帐页面中的输入文本值?