2010-12-29 8 views
12

Estoy tratando de actualizar una aplicación ASP.NET para .NET 4, pero una página en mi sitio contiene una excepción:"Una entrada con la misma clave ya existe" aparece cuando se compila bajo .NET 4

Argumento Excepción: una entrada con la misma clave ya existe"

lo que es diferente acerca de ASP.NET 4 que podrían causar este problema

enter image description here

.? 210

Una solución

No sé por qué, pero el establecimiento de clientIDMode="Predictable" en lugar de Static parece haber evitado este mensaje de excepción.

+0

¿Dónde se produce el error? Depure su código y muéstrenos el código fuente relevante. –

+0

Para mí, parece que la excepción proviene de Dictionary o de una colección similar ... –

+0

si el problema persiste, publique el código y el rastro de la pila completa del error. –

Respuesta

7

Tuve el mismo problema y lo solucioné.

Pasé por toda mi página ASPX y encontré el control ASP.NET que tenía el mismo ID que otro.

También probé esta solución y encontré que cualquier control que entre en conflicto con otro control en la página causará este error.

<asp:Label ID="FailureText" runat="server" EnableViewState="False" ClientIDMode="Static" /> 

<asp:Label ID="FailureText" runat="server" EnableViewState="False" ClientIDMode="Static" /> 

Ocurre cuando copia/pega elementos en la misma página.

+1

¡Cómo es esto posible! a menos que Visual Studio no permita compilar y apunte a la identificación duplicada. este error me está volviendo loco –

+0

@imanabidi al copiar/pegar en VS a veces cambia la ID, otras veces, no lo hace. Debe asegurarse de que cada elemento de la página tenga una ID única. –

+0

pero en VS 2012 simplemente no me deja hacer eso incluso con copiar/pegar. Sin embargo, mi problema fue establecer la propiedad de varios elementos seleccionados igual a verdadera en los elementos de DropDownList Colección –

0

Esto a su web.config también pueden causar el error al permitir identificadores duplicados

<pages clientIDMode="Static"> 
0

tengo este error también y se resuelve con este

<pages clientIDMode="Static">

mi DataGrid funciona bien esto:

Tengo cuadrícula Ver:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1"> 
        <Columns> 
         <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ButtonType="Button" CancelText="لغو" DeleteText="حذف" EditText="ويرايش" UpdateText="بروزرساني"> 
          <ControlStyle CssClass="btn btn-xs btn-default" /> 
          <ItemStyle Width="143px" /> 
         </asp:CommandField> 



         <asp:BoundField DataField="ID" HeaderText="#" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> 
         <asp:BoundField DataField="Title" HeaderText="عنوان" SortExpression="Title" /> 
         <asp:BoundField DataField="ParentID" HeaderText="پدر" SortExpression="ParentID" /> 
         <asp:BoundField DataField="Url" HeaderText="آدرس" SortExpression="Url"> 
          <ItemStyle CssClass="ltr"></ItemStyle> 
         </asp:BoundField> 

         <asp:BoundField DataField="Icon" HeaderText="آيکون" SortExpression="Icon" /> 

         <asp:BoundField DataField="Order" HeaderText="اولويت" SortExpression="Order" /> 

        </Columns> 
       </asp:GridView> 

pero después de campo de imagen adicional que veo este error

 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1"> 
        <Columns> 
         <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ButtonType="Button" CancelText="لغو" DeleteText="حذف" EditText="ويرايش" UpdateText="بروزرساني"> 
          <ControlStyle CssClass="btn btn-xs btn-default" /> 
          <ItemStyle Width="143px" /> 
         </asp:CommandField> 


         <asp:ImageField ReadOnly="true" SortExpression="Icon" DataImageUrlField="icon"> 
         </asp:ImageField> 

         <asp:BoundField DataField="ID" HeaderText="#" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> 
         <asp:BoundField DataField="Title" HeaderText="عنوان" SortExpression="Title" /> 
         <asp:BoundField DataField="ParentID" HeaderText="پدر" SortExpression="ParentID" /> 
         <asp:BoundField DataField="Url" HeaderText="آدرس" SortExpression="Url"> 
          <ItemStyle CssClass="ltr"></ItemStyle> 
         </asp:BoundField> 

         <asp:BoundField DataField="Icon" HeaderText="آيکون" SortExpression="Icon" /> 

         <asp:BoundField DataField="Order" HeaderText="اولويت" SortExpression="Order" /> 

        </Columns> 
       </asp:GridView> 
Cuestiones relacionadas