【发布时间】:2018-03-25 05:47:13
【问题描述】:
我想将 ajax 调用中的对象数组发送到控制器操作。
在后端我有
容器类:
public class MyContainer
{
public string Id { get; set; }
public Filter[] Filters { get; set; }
}
public class Filter
{
public string Name { get; set; }
public string[] Values { get; set; }
}
和行动:
public ActionResult MyAction(MyContainer container)
{
var id = container.Id;
foreach(Filter filter in container.Filters)
{
//Do something
}
}
在前端我有
$(document).on('click', 'mySelector', function (event) {
//Create first object
var firstIds = {};
firstIds.Name = "Custom Name 1";
firstIds.Values = GetIds('param1'); //this return an array of strings
//Create second object
var secondIds = {};
secondIds.Name = "Custome Name 2";
secondIds.Values = GetIds('param2'); //another array
var Id = $(this).attr('id'); //id of element
//Add objects to array
var filters = [];
filters.push(firstIds);
filters.push(secondIds);
$.ajax({
method: "GET",
url: baseUrl+"/MyAction",
//traditional: true, //I tried with and without that parameter
data:
{
Id: Id,
Filters: filters
},
contentType: 'application/json',
success: function (res) {
alert('success')
}
});
});
因此,如果我像上面的示例一样使用它,则运行中的容器对象具有 Id 值并在过滤器中具有 2 个元素的数组,但是它们的名称和值都为空。
将传统设置为 True,我设置了 container.Id 但 container.Filters = null。
有什么建议吗? 谢谢。
【问题讨论】:
标签: javascript c# jquery ajax asp.net-mvc