提交抛出ArgumentException:已添加具有相同键的项

时间:2011-03-10 04:20:12

标签: asp.net-mvc

我的控制器没有在提交时从视图页面调用,而是在我点击提交按钮时收到错误消息。

错误:已添加具有相同键的项目。

堆栈跟踪:

[ArgumentException: An item with the same key has already been added.]
   System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) +52
   System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) +9382923
   System.Linq.Enumerable.ToDictionary(IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer) +252
   System.Linq.Enumerable.ToDictionary(IEnumerable`1 source, Func`2 keySelector, IEqualityComparer`1 comparer) +91
   System.Web.Mvc.ModelBindingContext.get_PropertyMetadata() +228
   System.Web.Mvc.DefaultModelBinder.BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor) +392
   System.Web.Mvc.DefaultModelBinder.BindProperties(ControllerContext controllerContext, ModelBindingContext bindingContext) +147
   System.Web.Mvc.DefaultModelBinder.BindComplexElementalModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Object model) +98
   System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +2504
   System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +548
   System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +473
   System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +181
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +830
   System.Web.Mvc.Controller.ExecuteCore() +136

2 个答案:

答案 0 :(得分:3)

您的viewmode必须具有两个具有相同名称的属性,例如UserName和userName。当MVC进行模型绑定时,它不区分大小写,它会认为你有两个相同的属性。

答案 1 :(得分:0)

可能需要更多代码来回答您的问题,例如Aciton Method和Form。

我的猜测是模型绑定试图添加两个具有相同名称/ ID的表单值并在那里失败,因此我会检查您的视图代码以确保您没有使用相同的ID标记两次。