【问题标题】:System.ArgumentException: An entry with the same key already existsSystem.ArgumentException:已存在具有相同键的条目
【发布时间】:2012-08-20 11:55:18
【问题描述】:

我的母版页,我使用手风琴菜单

<%@ Master Language="C#" AutoEventWireup="true" 
            CodeBehind="DefaultMaster.Master.cs" Inherits="Lab.DefaultMaster" 

ClientIDMode="Static" %>

<%@ Import Namespace="Resources" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<link type="text/css" href="css/style.css" rel="Stylesheet" />
<title>
<asp:ContentPlaceHolder ID="title" runat="server">
</asp:ContentPlaceHolder>
</title>
<link href="css/custom-theme/jquery-ui-1.8.2.custom.css" type="text/css" 
 rel="Stylesheet" />
<link type="text/css" href="css/accordion.css" rel="Stylesheet" />
<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/js/jquery-ui-1.8.2.custom.min.js"></script>
<script src="/js/jquery.cookie.js" type="text/javascript"></script>
<script type="text/javascript" src="/js/ddaccordion.js"></script>
<script type="text/javascript">


ddaccordion.init({ //top level headers initialization
headerclass: "expandable", //Shared CSS class name of headers group that are 
expandable
contentclass: "categoryitems", //Shared CSS class name of contents group
revealtype: "click", //Reveal content when user clicks or onmouseover the header?
Valid value: "click", "clickgo", or "mouseover"
mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds 
 before header expands onMouseover
collapseprev: true, //Collapse previous content (so only one open at any time)? 
true/false 
defaultexpanded: [0], //index of content(s) open by default [index1, index2, etc]. 
 [] denotes no content
onemustopen: false, //Specify whether at least one header should be open always (so  
never all headers closed)
animatedefault: false, //Should contents open by default be animated into view?
persiststate: true, //persist state of opened contents within browser session?
toggleclass: ["", "openheader"], //Two CSS classes to be applied to the header when 
it's collapsed and expanded,

respectively ["class1", "class2"]
togglehtml: ["prefix", "", ""], //Additional HTML added to the header when it's 
collapsed and expanded, respectively

["position", "html1", "html2"] (see docs)
animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), 
or keywords "fast", "normal", or "slow"
oninit: function (headers, expandedindices) { //custom code to run when headers
  have initalized
//do nothing
},
onopenclose: function (header, index, state, isuseractivated) { //custom code to 
run whenever a header is opened or closed
//do nothing
}
});
ddaccordion.init({ //2nd level headers initialization
headerclass: "subexpandable", //Shared CSS class name of sub headers group that
are expandable
contentclass: "subcategoryitems", //Shared CSS class name of sub contents group
revealtype: "click", //Reveal content when user clicks or onmouseover the header? 
Valid value: "click" or "mouseover
mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before 
 header expands onMouseover
collapseprev: true, //Collapse previous content (so only one open at any time)? 
 true/false 
defaultexpanded: [], //index of content(s) open by default [index1, index2, etc]. [] 
 denotes no content
onemustopen: false, //Specify whether at least one header should be open always (so 
 never all headers closed)
animatedefault: false, //Should contents open by default be animated into view?
persiststate: true, //persist state of opened contents within browser session?
toggleclass: ["opensubheader", "closedsubheader"], //Two CSS classes to be applied 
 to the header when it's collapsed

and expanded, respectively ["class1", "class2"]
togglehtml: ["none", "", ""], //Additional HTML added to the header when it's 
 collapsed and expanded, respectively

["position", "html1", "html2"] (see docs)
animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200),
 or keywords "fast", "normal", or "slow"
oninit: function (headers, expandedindices) { //custom code to run when headers
  have initalized
//do nothing
},
onopenclose: function (header, index, state, isuseractivated) { //custom code
to run whenever a header is opened or closed
//do nothing
}
});


</script>

<asp:ContentPlaceHolder ID="head" runat="server">

</asp:ContentPlaceHolder>

<style type="text/css">
.style1
{
width: 140px;
}
</style>

</head>

//正文

<body style="min-width:930px;">
<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
<td style="vertical-align:top;" class="style1">
<div class="arrowlistmenu">

<h3 class="menuheader expandable">asd</h3>
<ul class="categoryitems">
<li><a href="/GeneralData/Data.aspx">asd</a></li>
</ul>

<h3 class="menuheader expandable">sd</h3>

<ul class="categoryitems">

<li><a href="/Instruct/page2.aspx">sdf</a></li>
<li><a href="/Instruct/page3.aspx">sdf</a></li>
<li><a href="#">sdf</a></li>
<li><a href="#">sdf</a></li>
<li><a href="#">sdf</a></li>
<li><a href="#">sdf</a></li>

</ul>

<h3 class="menuheader expandable">sdf</h3>
<ul class="categoryitems">
<li><a href="#">sdf</a></li> 
<li><a href="#">asd</a></li>
<li><a href="#">asd</a></li>
</ul>
<h3 class="menuheader expandable">asd</h3>
</div>

</td></tr></table>
</body>
</html>

在启动页面时,他给了我错误

Server Error in '/' Application.

An entry with the same key already exists.

Description: An unhandled exception occurred during the execution of the current web 
request. Please review the stack trace for more information about the error and where
it originated in the code. 

Exception Details: System.ArgumentException: An entry with the same key already exists.

Source Error: 


An unhandled exception was generated during the execution of the current web request. 

可以识别有关异常的起源和位置的信息 使用下面的异常堆栈跟踪。

Stack Trace: 


[ArgumentException: An entry with the same key already exists.]
   System.Collections.Specialized.ListDictionary.Add(Object key, Object value)
                                                                           +6236205
   System.Web.UI.ClientScriptManager.RegisterExpandoAttribute(String controlId, 
  String attributeName, String attributeValue,
 Boolean encode) +272
   System.Web.UI.ScriptRegistrationManager.RegisterExpandoAttribute(Control control, 
 String controlId, String attributeName, 
String attributeValue, Boolean encode) +115
   System.Web.UI.ScriptManager.RegisterExpandoAttribute(Control control, S
   tring controlId, String attributeName,
 String attributeValue, Boolean encode) +44

【问题讨论】:

    标签: asp.net exception master-pages


    【解决方案1】:

    很幸运,您的代码的第一行就有错误原因。因为我只是被它吓坏了。将验证者的 ClientIDMode 更改为 Predictable

    【讨论】:

    • 如果您从 web.config 中的 ClientIDMode "static" 更改 - 请小心更改此设置,因为您可能会破坏站点上正在使用的任何 jQuery,因为这将更改所有控件的 ID。
    【解决方案2】:

    2 小时后,我找到了以下异常的解决方案。

    [ArgumentException: An entry with the same key already exists.]
       System.Collections.Specialized.ListDictionary.Add(Object key, Object value) +6888908
       System.Web.UI.ClientScriptManager.RegisterExpandoAttribute(String controlId, String attributeName, String attributeValue, Boolean encode) +340
       System.Web.UI.ScriptRegistrationManager.RegisterExpandoAttribute(Control control, String controlId, String attributeName, String attributeValue, Boolean encode) +113
    

    在我的情况下,这是因为 selected 对于 DropDownList Items 字典中的多个项目都是正确的

     if (DropDown.Items.FindByText(value) != null) {
          //important note:  
          //below line will reset selected true if previously this field is set and  caused the exception and must be removed
          //DropDown.SelectedIndex = -1;
          DropDown.Items.FindByText(value).Selected = true;
       }
    

    【讨论】:

    • 你为我节省了 2 小时的时间,所以谢谢你 :)!尝试在 .FindByText() 之前在下拉列表中执行 ClearSelection()
    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多