この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()
オブジェクト全体を試してみました。