Javascript MVC.NET上的ajax帖子未正确传递数组

Javascript MVC.NET上的ajax帖子未正确传递数组,javascript,c#,jquery,ajax,asp.net-mvc,Javascript,C#,Jquery,Ajax,Asp.net Mvc,我有一个简单的模式,使用select2从服务器获取产品列表。用户可以选择多个产品并点击Ok来优化搜索 下面的设置从modal中获取数据,并对控制器操作执行ajax调用,该控制器操作具有强类型视图模型,该视图模型与JS试图通过ajax调用发送的内容相匹配 阿贾克斯: 以及我的强类型视图模型: public class ReportCriteriaViewModel { public ProductViewModel[] Products { get; set; } public s

我有一个简单的模式,使用select2从服务器获取产品列表。用户可以选择多个产品并点击Ok来优化搜索

下面的设置从modal中获取数据,并对控制器操作执行ajax调用,该控制器操作具有强类型视图模型,该视图模型与JS试图通过ajax调用发送的内容相匹配

阿贾克斯:

以及我的强类型视图模型:

public class ReportCriteriaViewModel
{
    public ProductViewModel[] Products { get; set; }
    public string[] Locations { get; set; }
    public string[] Companies { get; set; }
    public string UserTypes { get; set; }
    public string GroupUsers { get; set; }
    public string DateStart { get; set; }
    public string DateEnd { get; set; }
}

public class ProductViewModel
{
    public Guid Id { get; set; }
    public string Text { get; set; }
}
一旦控制器操作被点击,我可以看到DateStart和DateEnd已成功绑定,但我的产品列表没有绑定

我无法更改json请求的数据类型,它必须是html,因为我的控制器操作将返回html

我尝试更改Id和文本的大小写JSON.stringify(这实际上使日期不再绑定)


我做错了什么?

问题在于如何序列化列表:

products[0][id]
products[0][text]
您需要以以下格式发送列表:

products[0].id
products[0].text
id
text
应该是属性,没有
[]
,否则它将被视为二维数组的索引。

尝试在Ajax请求中添加contentType:“application/json”

$.ajax({
    ...
    contentType: "application/json",
    ...
});
你应该试试

contentType: "application/json; charset=utf-8"
在$.ajax调用的选项中

$.ajax({
        dataType: "html",
        type: "POST",
        url: "/Report/Group/FilteredView",
        data: exploreFilters,
        contentType: "application/json; charset=utf-8" ....

嗨,谢谢你的评论。我认为这就是Chrome webtools显示表单数据的方式。快速检查发现,数据结构产品只是一个对象列表,其中对象具有属性id和文本。谢谢,这在修复了另一个问题后起到了作用。基本上,将这一点与数据字符串化相结合,可以使数据正确地发送到服务器。数据:JSON.stringify(exploreFilters)谢谢!
contentType: "application/json; charset=utf-8"
$.ajax({
        dataType: "html",
        type: "POST",
        url: "/Report/Group/FilteredView",
        data: exploreFilters,
        contentType: "application/json; charset=utf-8" ....