Tengo una llamada jQuery ajax en la que estoy tratando de enviar las identificaciones int de usuarios que se pueden seleccionar de una tabla de casillas de verificación.MVC con jQuery La llamada AJAX no vincula correctamente la matriz vacía/enumerable
Tengo un problema con el caso de que no hay usuarios seleccionados. Esperaría una matriz vacía, pero de hecho recibo una matriz de longitud = 1, que contiene ID de usuario 0 (es decir, un valor int sin asignar).
El siguiente fragmento reproduce el problema
$('#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;
}
la aserción falla porque es numbers
List<int> { 0 }
. ¿Por qué la vinculación está sucediendo así?
El código es poco confuso, que son números ajuste a "1", es decir numbers.Count() es 1. Pero, idealmente, cuando no se seleccionan usuarios, los números.Count() deberían ser idealmente "0". Y es entonces cuando la afirmación está fallando. Es esto correcto ? –
¿Puedes probar el siguiente cambio en tu método de acción y ver si funciona o no? Reemplace IEnumerable con IList. Vea si funciona, si es así, entonces agregaré una respuesta detallada a esta publicación. –
Numbers es una matriz de 0 longitudes de 1s. Cambiar de 'IEnumerable' a' IList' no hará ninguna diferencia. – fearofawhackplanet