Jquery 将简单的对象和集合传递给MVC3控制器-传统方法的正确用途是什么?
我正在尝试为这个AJAX请求提供正确的语法。我知道我需要为我的列表使用“traditional:true”参数,但它会破坏正在传递的其他参数: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({
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的组合。