Javascript MVC.NET上的ajax帖子未正确传递数组
我有一个简单的模式,使用select2从服务器获取产品列表。用户可以选择多个产品并点击Ok来优化搜索 下面的设置从modal中获取数据,并对控制器操作执行ajax调用,该控制器操作具有强类型视图模型,该视图模型与JS试图通过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
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" ....