将javascript数组传递给List<;int>;参数
本文关键字:lt gt 参数 int List 数组 javascript | 更新日期: 2023-09-27 18:27:15
我有一个接受List<int>
的控制器,我从AJAX调用它。控制器被击中,但参数始终为null
。
我的控制器:
public ActionResult MinorAreas(List<int> majorareas)
{
// ...
}
jQuery调用:
function onChange(e)
{
var cur = this.value(); // an array of numbers like [2,4,7,9]
$.ajax({
cache: false,
type: "GET",
traditional: true,
url: "@(Url.RouteUrl("GetMinorAreas"))",
data: { "majorareas": cur},
success: function (data) {...},
error: function (xhr, ajaxOptions, thrownError) {... }
});
}
路线定义:
routes.MapLocalizedRoute(
"GetMinorAreas",
"minorAreas",
new { controller="ProSearch", action="MinorAreas", majorareas=new List<int>() },
new[] { "ABC.ZZZ.Controllers" }
);
使用fiddler,我可以看到URI是正确构建的:
# With an array of [2]
http://localhost:15536/minorAreas?majorareas=2&_=1450307693166
# With an array of [2,3,9]
http://localhost:15536/minorAreas?majorareas=2&majorareas=3&majorareas=9&_=1450308261808
我已经研究过这个关于将数组传递给带有List<int>
参数的控制器的问题,但这个解决方案似乎对我不起作用。我做错了什么?
看起来网络请求的生成是正确的。问题在于路线定义:
routes.MapLocalizedRoute(
"GetMinorAreas",
"minorAreas",
new { controller="ProSearch", action="MinorAreas", majorareas=new List<int>() },
new[] { "ABC.ZZZ.Controllers" }
);
majorareas=new List<int>()
将确保majorareas
始终是一个空列表,即使在其他情况下它也会被填充!
您不必在此处定义参数;控制器中的方法定义就是这样做的。关掉它,它应该会正常工作:
routes.MapLocalizedRoute(
"GetMinorAreas",
"minorAreas",
new { controller="ProSearch", action="MinorAreas" },
new[] { "ABC.ZZZ.Controllers" }
);