Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将简单的对象和集合传递给MVC3控制器-传统方法的正确用途是什么?_Jquery_Asp.net_Ajax_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Jquery 将简单的对象和集合传递给MVC3控制器-传统方法的正确用途是什么?

Jquery 将简单的对象和集合传递给MVC3控制器-传统方法的正确用途是什么?,jquery,asp.net,ajax,asp.net-mvc,asp.net-mvc-3,Jquery,Asp.net,Ajax,Asp.net Mvc,Asp.net Mvc 3,我正在尝试为这个AJAX请求提供正确的语法。我知道我需要为我的列表使用“traditional:true”参数,但它会破坏正在传递的其他参数: $.ajax({ type: 'GET', dataType: 'json', url: '../Workflow/GetTasks', contentType: "application/json", data: { queueID: filterData.queueID, wor

我正在尝试为这个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; }
}
public ActionResult gettask(TaskFilter TaskFilter)
公共类任务筛选器
{
public int QueueID{get;set;}
public int WorkflowFilterID{get;set;}
公共列表GenericFilters{get;set;}
}
公共类泛型过滤器
{
公共int AttributeID{get;set;}
公共字符串FirstValue{get;set;}
公共字符串第二个值{get;set;}
}
我可以成功获取我的queueID和
workflowFilterID
。根据我的设置,我要么为
GenericFilters
、一个空列表,要么为一个包含2个项目但未设置任何项目属性的列表获取null

当前,传递
traditional:true
会导致定义
queueID
workflowFilterID
,但
genericFilters
是一个包含0项的列表。如果我注释掉传统的参数,我会收到一个包含两个空对象的列表


有人能帮我解释一下这个的语法吗?我已尝试在
$.param(filterData.genericFilters,true)
中包装
genericFilters
。我在整个对象上尝试了
JSON.stringify()

我想知道一些事情,但最重要的是,像列表这样的复杂对象应该发布

试试这个:

$.ajax({
    type: 'POST',
    dataType: 'json',

如果您将数据JSON.stringify并使用POST而不是GET,会怎么样?您还可以显示GET请求请求的URL吗?我会尝试对filterData对象进行字符串化并直接传递它。filterData.genericFilters是什么样子的?因此,除了对作为数据传递的整个对象调用JSON.stringify()外,它是传递POST而不是GET的组合。