gpt4 book ai didi

c# - 带有 jQ​​uery Ajax 调用的 MVC 不能正确绑定(bind)空数组/可枚举

转载 作者:太空狗 更新时间:2023-10-29 20:40:20 25 4
gpt4 key购买 nike

我有一个 jQuery ajax 调用,我在其中尝试发送可以从复选框表中选择的用户的 int ID。

我对没有选择用户的情况有疑问。我希望有一个空数组,但实际上我收到了一个长度为 1 的数组,其中包含 userId 0(即未分配的 int 值)。

下面的片段重现了这个问题

$('#test').click(function () {
var numbers = $('.noElements').map(function () {
// (selector does not match any elements, to demonstrate)
return 1;
}).get();

$.ajax({
url: '/MyController/Test',
type: "GET",
data: { numbers: numbers, count: numbers.length }
});
});


public ActionResult Test(IEnumerable<int> numbers, int count)
{
Assert(numbers.Count() == count);
return null;
}

断言失败,因为 numbersList<int> { 0 } .为什么绑定(bind)会这样发生?

最佳答案

我相信默认模型绑定(bind)器会将 jQuery AJAX 调用传递给它的空字符串转换为一个整数数组,该数组包含一个包含整数默认值 (0) 的元素。如果你做了这样的事情,你的代码就会工作 -

$('#test').click(function () {
var numbers = $('.noElements').map(function () {
return 1;
});
if (numbers.length == 0) {
numbers = null;
count = 0;
}
else count = numbers.length;

$.ajax({
url: '/Home/Test',
type: "GET",
data: { numbers: numbers, count: count }
});
});

有关更多信息和替代解决方案,请参阅此问题 - How to post an empty array (of ints) (jQuery -> MVC 3)

关于c# - 带有 jQ​​uery Ajax 调用的 MVC 不能正确绑定(bind)空数组/可枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8050830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com