首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

MVC 3 升級 MVC 5.1 遭遇「已加入相同鍵的項」:JSON 大小寫不一致導致模型繫結爆炸

     編輯:關於ASP.NET

專案從 ASP.NET MVC 3 升級至 5.1 後,某 AJAX 請求拋出 System.ArgumentException: 已加入相同鍵的項,堆疊指向 JsonValueProviderFactory。

根因:JavaScript 物件屬性大小寫不一致

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# 模型),或在前端序列化前正規化鍵名。

教訓

  • 升級框架後,模型繫合行為可能變嚴格,需回歸測試所有 AJAX 端點。
  • 前端物件屬性命名應與後端模型一致,避免大小寫差異導致難以追蹤的錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved