양식을 제출할 때마다이 오류가 발생하며이 때문에 조치 메소드가 호출되지 않습니다.
같은 키를 가진 아이템이 이미 추가되었습니다.
예외 정보 :
[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처럼 같은 이름을 가진 두 개의 변수가있었습니다.