[Asp.Net MVC] An item with the same key has already been added!

Posted by Harry Chang on November 15, 2016

An item with the same key has already been added」系統執行到一半,突然跳出這個訊息,

仔細看一下錯誤訊息有一段寫道「System.Web.Mvc.DefaultModelBinder.BindProperty…」,

於是朝Model Binding 異常的方向前進。

首先看一下我們的Model:

1
2
3
4
5
        public class InputModel : BaseModel
        {
            public string Email { get; set; }
            //...
        }

看起來很正常,而且我也確定前端Request 回來的資料,名稱是吻合的,

但錯誤訊息顯示「An item with the same key has already been added」,代表一定有什麼地方重複了,

仔細看一下,BaseModel:

1
2
3
4
        public class BaseModel
        {
            public string email { get; set; }
        }

有一個「email」 但跟「Email」不同,首個字母一個是大寫,另一個是小寫,

原來Model Binding 是不分大小寫的!這個地方要特別小心!

補充:

另外有一些特例,像是我們透過url query string 把資料帶回來,但若Action 強型別為Enum 這時又分大小寫了,

可以參考Model-binding is being case-sensitive when binding Url data to Enum parameter



icon_wechat.png