專案從 ASP.NET MVC 3 升級至 5.1 後,某 AJAX 請求拋出 System.ArgumentException: 已加入相同鍵的項,堆疊指向 JsonValueProviderFactory。
var pagingBuider = { "PageIndex": 1 };
function buildPaging(pageIndex) {
pagingBuider.pageIndex = pageIndex; // 小寫 p,造成重複鍵
$.ajax({ data: JSON.stringify(pagingBuider), ... });
}
送出的 JSON 變為:{"PageIndex":1,"pageIndex":2},MVC 5.1 的 JSON 模型繫結器嚴格檢查鍵名大小寫,視為重複鍵而拋出例外。(MVC 3/4 可能較寬鬆)
統一屬性命名慣例(建議 PascalCase 對應 C# 模型),或在前端序列化前正規化鍵名。
