我有一個jQuery ajax調用,其中我試圖發送可從複選框表中選擇的用戶的int ID。MVC與jQuery Ajax調用不正確綁定空數組/枚舉
我遇到問題,沒有用戶被選中。我期望一個空數組,但事實上,我收到一個長度爲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;
}
斷言失敗,因爲numbers
是List<int> { 0 }
。爲什麼綁定發生像這樣?
代碼是有點混亂,要設置編號爲「1」,即numbers.Count ()是1.但理想情況下,當沒有用戶被選中時,numbers.Count()應該是理想的「0」。然後它的斷言失敗了。它是否正確 ? –
你可以在你的動作方法中嘗試下面的改變,看看它是否有效。用IList替換IEnumerable。看看它是否有效,如果是的話,那麼我會爲這篇文章添加一個詳細的答案。 –
Numbers是1的0長度數組。從「IEnumerable」變爲「IList」不會有什麼區別。 – fearofawhackplanet