Bir jQuery ajax çağrısı var; bu kutuda, onay kutularının bir tablosundan seçilebilecek int kullanıcı kimliklerini göndermeye çalışıyorum.MVC Ajax çağrısı boş diziyi/dizgesini doğru şekilde bağlamaz
Hiçbir kullanıcının seçilmediği durumda sorun yaşıyorum. Boş bir dizi beklerdim ama aslında userId 0 (yani atanmamış bir int değeri) içeren bir uzunluk = 1 dizisi alırım.
aşağıdaki pasajı numbers
List<int> { 0 }
çünkü Assert başarısız problemi
$('#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;
}
çoğalır. Bağlanma neden böyle oluyor?
"1" yani numbers.Count() 1'dir. Fakat ideal olarak, hiçbir kullanıcı seçilmediğinde, numbers.Count() ideal olarak "0" olmalıdır. Ve sonra onun iddiası başarısız oluyor. Bu doğru mu ? –
Aşağıdaki değişikliği eylem yönteminizde deneyebilir ve çalışıp çalışmadığını kontrol edebilirsiniz. IList ile IEnumerable değiştirin. Eğer işe yarayıp yaramadığına bakın, evet ise, o zaman bu yazıya detaylı bir cevap ekleyeceğim. –
Numaralar, 1 uzunluklu bir uzunluk dizisidir. IEnumerable'dan 'IList’e geçiş yapmak herhangi bir fark yaratmayacaktır. – fearofawhackplanet