【发布时间】:2015-12-16 21:37:56
【问题描述】:
我有一个带有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
我已经看过this question 关于将数组传递给带有List<int> 参数的控制器,但该解决方案似乎对我不起作用。我做错了什么?
【问题讨论】:
-
你能编辑并提供实际的网络请求吗?您的 JSON 格式可能不正确。
-
哦,呃……我应该想到的。是的,马上就来。
-
添加了 fiddler 捕获
-
看起来值正在被传递(作为单独的查询字符串参数),这应该起作用。这必须是
GET吗?POST可能会让你更幸运。 -
你为什么在路由定义中使用
majorareas=new List<int>()?
标签: javascript c# ajax