我正在尝试为这个 AJAX 请求获取正确的语法。我知道我需要为我的列表使用 'traditional: true' 参数,但它破坏了正在传递的其他参数:
$.ajax({
type: 'GET',
dataType: 'json',
url: '../Workflow/GetTasks',
contentType: "application/json",
data: {
queueID: filterData.queueID,
workflowFilterID: filterData.workflowFilterID,
genericFilters: filterData.genericFilters
},
traditional: true,
success: function (data) {
},
error: function (error) {
window.console && console.error(error);
}
});
我的控制器的 GetTasks 方法:
public ActionResult GetTasks(TaskFilter taskFilter)
public class TaskFilter
{
public int QueueID { get; set; }
public int WorkflowFilterID { get; set; }
public List<GenericFilter> GenericFilters { get; set; }
}
public class GenericFilter
{
public int AttributeID { get; set; }
public string FirstValue { get; set; }
public string SecondValue { get; set; }
}
我可以成功获取我的 queueID 和workflowFilterID
. 根据我的设置,我要么得到 null ,要么得到GenericFilters
一个空列表,要么得到一个包含 2 个项目的列表,但没有设置任何项目属性。
目前,传递traditional: true
结果queueID
并被workflowFilterID
定义,但genericFilters
它是一个包含 0 个项目的列表。如果我注释掉传统参数,我会收到一个包含 2 个空对象的列表。
有人可以帮我解决这个问题吗?我试过包裹genericFilters
在$.param(filterData.genericFilters, true)
. 我已经尝试JSON.stringify()
过整个对象..