[asp.net-mvc] 같은 키를 가진 아이템이 이미 추가되었습니다

양식을 제출할 때마다이 오류가 발생하며이 때문에 조치 메소드가 호출되지 않습니다.

같은 키를 가진 아이템이 이미 추가되었습니다.

예외 정보 :

[ArgumentException : 동일한 키를 가진 항목이 이미 추가되었습니다.]
System.ThrowHelper.ThrowArgumentException (ExceptionResource resource) +52
System.Collections.Generic.Dictionary`2.Insert (TKey 키, TValue 값, 부울 추가) +9382923 시스템 .Linq.Enumerable.ToDictionary (IEnumerable`1 소스, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 비교기) +252
System.Linq.Enumerable.ToDictionary (IEnumerable`1 소스, Func`2 키 선택기, IEqualityComparer`1
비교기 ) +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 시스템 .Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +111
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) +39
System.Web.Mvc. <> c__DisplayClass8.b__4 () +65 System.Web.Mvc.Async. <> c__DisplayClass1.b__0 () +44 System.Web.Mvc.Async. <> c__DisplayClass8`1.b__7 (IAsyncResult _ ) +42 System.Web.Mvc.Async.WrappedAsyncResult`1.End () +141 System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult asyncResult, Object tag) +54
System.Web.Mvc.Async.AsyncResultWrapper. 끝 (IAsyncResult asyncResult, 개체 태그) +40
System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +52
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (IAsyncResult 결과) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +8836913 System.Web.HttpApplication.ExecuteStep (IExecutionStep 단계, Boolean & completedSynchronously) +184

ViewPage

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/XYZ.Master"
    Inherits="System.Web.Mvc.ViewPage<XYZ.Models.Admin.AdminSegmentCommissionsModel>" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
        Create
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
        <% using (Html.BeginForm()) {%>    
            <div class="box3">
                <div class="userinfo">
                    <h3>Admin Segment Commissions</h3>
                </div>
                <div class="buttons-panel">
                    <ul>
                       <li>
                           <input type="submit" value="Save" class="save" />
                       </li>
                       <li>
                           <%:Html.ActionLink("Cancel", "Index", new { controller = "AdminSegmentCommissions" }, new { @class = "cancel" })%>
                           <%--<input type="button" value="Cancel" class="cancel" onclick="document.location.href='/AirlineLedgerTransactionReceiver/Index'" />--%>
                       </li>
                   </ul>
               </div>
           </div>
           <div class="row-1">
               <div class="form-box1 round-corner">
                   <div class="form-box1-row">
                       <div class="form-box1-row-content float-left">
                           <div>
                               <label>
                                   <%: Html.LabelFor(model => model.FromSegmentNumber) %></label>
                                   <%: Html.TextBoxFor(model => model.FromSegmentNumber) %>
                                   <%: Html.ValidationMessageFor(model => model.FromSegmentNumber) %>
                          </div>
                      </div>
                  </div>
              </div>
          </div>
      <%} %>



답변

아마도 같은 속성을 두 번 포함하는 모델이 있을 것 입니다. 아마도 new기본 속성을 숨기는 데 사용 하고있을 것입니다.

해결책은 속성을 재정의하거나 다른 이름을 사용하는 것입니다.

모델을 공유하면 더 정교해질 수 있습니다.


답변

나는 같은 문제가 있었고 이것이 내가 그것을 해결 한 방법입니다. 내 ViewModel에 동일한 이름의 중복 속성이 있습니다. 하나의 속성은 BaseViewModel에 있고 다른 속성은 파생 된 모델에 있습니다.

public class BaseviewModel{
  public int UserId { get; set; }
}


 public class Model : BaseViewModel
 {
     public int UserId { get; set; }
 }

나는 그것을

public class BaseviewModel{
   public int UserId { get; set; }
}


public class Model : BaseViewModel
{
    public int User_Id { get; set; }
}

이제는 잘 작동합니다.


답변

나는 비슷한 문제를 겪었을 뿐인데, 비슷한 경우에 이름이 다른 공공 재산 (사적 이었어 야했던)이 있었기 때문에 그 경우에만 달랐다는 것을 알았다.

public string PropertyName {get;set;} // actually set propertyName, get propertyName
public string propertyName {get;set;}

이어야했다

public string PropertyName {get;set;} 
private string propertyName {get;set;}


답변

나는이 같은 2 가지 모델 속성을 가지고

public int LinkId {get;set;}
public int LinkID {get;set;}

이 2 haha에 대해이 오류가 발생하는 것은 이상합니다.


답변

내 C # 모델에는 문제가 없지만 javascript 객체에는 AJAX를 사용하여 게시하고있었습니다. 바인딩에 Angular를 사용하고 Notes있으며 C # 객체가 소문자를 기대하는 동안 페이지에 대문자 필드가 notes있습니다. 더 설명적인 오류는 확실히 좋을 것입니다.

씨#:

class Post {
    public string notes { get; set; }
}

각도 / 자바 스크립트 :

<input ng-model="post.Notes" type="text">


답변

나는 같은 문제가 있었다. 나는 foreach내 객체를 반복하고 결과를 a에 추가 Dictionary<string, string>하고 데이터베이스에서 키에`Duplicate했다.

 foreach (var item in myObject)
        {
            myDictionary.Add(Convert.ToString(item.x), 
                                   item.y);

        }

item.x 중복 가치가 있었다


답변

나는 대답을 찾았습니다. 변수 때문이었습니다. int a와 string a처럼 같은 이름을 가진 두 개의 변수가있었습니다.