2010-12-29 4 views
12

Sto cercando di aggiornare un'applicazione ASP.NET per .NET 4, ma una pagina sul mio sito contiene un'eccezione:"Una voce con la stessa chiave esiste già" appare quando viene compilato in .NET 4

Argomento Eccezione: una voce con la stessa chiave esiste già"

cosa è diversa su ASP.NET 4 che potrebbe causare questo problema

enter image description here

.? 210

One Solution

Non so perché, ma l'impostazione clientIDMode="Predictable" piuttosto che Static sembra aver evitato questo messaggio di eccezione.

+0

dove si verifica l'errore? Esegui il debug del tuo codice e mostraci il codice sorgente pertinente. –

+0

Per me sembra che l'eccezione sia stata lanciata dal dizionario o da una raccolta simile ... –

+0

se il problema persiste, si prega di inserire il codice e la traccia dello stack completo dell'errore. –

risposta

7

Ho avuto lo stesso problema e l'ho risolto.

Ho passato tutta la mia pagina ASPX e ho trovato il controllo ASP.NET che aveva lo stesso ID di un altro.

Ho verificato anche questa correzione e ho rilevato che qualsiasi controllo in conflitto con un altro controllo nella pagina causerà questo errore.

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

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

Succede quando si copia/incolla elementi sulla stessa pagina.

+1

come è possibile! a meno che Visual Studio non gli consenta di compilare e indicare duplicati id. questo errore mi fa impazzire –

+0

@imanabidi quando si copia/incolla in VS a volte cambia l'ID, altre volte no. È necessario verificare che ciascun elemento della pagina abbia un ID univoco. –

+0

ma in VS 2012 semplicemente non me lo permette di farlo anche con copia/incolla. Comunque il mio problema era impostare più proprietà Items'Selected uguale a true in DropDownList items Collection –

0

Questo nel web.config può anche causare l'errore, consentendo ID duplicati

<pages clientIDMode="Static"> 
0

ho questo errore troppo e non di risolvere con questo

<pages clientIDMode="Static">

mia datagrid funziona bene questo:

Ho griglia Vista:

<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> 

ma dopo immagine add campo vedo questo errore

 <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>