首先,我想指出的是,我是很新的與ASP.NET內MS Ajax框架工作,所以有可能是一個令人難以置信的簡單和基本我做錯了...我非常樂意接受!AJAX與ASP.NET 4 - 使用Ajax添加到列表項
無論如何,我試圖通過發送一個新的序列號到服務器,驗證它,然後從更新服務器端的ListBox控件項目添加到列表框。我第一次點擊按鈕時,我得到了期望的結果 - 新的序列號被髮送到服務器,添加到服務器的列表框實例中,然後發送回客戶端。 到目前爲止好...
不幸的是,下一次我點擊添加按鈕我得到一個異常:
Unhandled exception at line 881, column 13 in http://ajax.aspnetcdn.com/ajax/4.5/3/MicrosoftAjaxWebForms.debug.js
0x800a139e - Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: An item with the same key has already been added.
這第二個命令不似乎補差到服務器,異常似乎在客戶端到達服務器之前(我通過在按鈕單擊事件處理程序上在服務器上放置斷點和跟蹤命令來驗證這一點)。
我不知道它指的是哪個鍵,我沒有與Ajax框架,試圖通過JavaScript的巢追查問題不夠熟悉!
我知道,這個問題是沒有任何與我的列表框的用法的問題仍然存在,當我只有按鈕和文本框。
我已經包括了我的ASP代碼和隱藏代碼或一個非常簡單的應用程序,我可以重現這個問題。 如果任何人都可以解釋這個異常,我將不勝感激 - 任何搜索,我迄今做的只有拿出數據綁定的人,並有真正重複的鍵...我看不到我在哪裏即使使用一把鑰匙!我確定它是在ajax框架內部註冊的東西。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxTest.aspx.cs" Inherits="AjaxTest" %>
<!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">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager runat="server" EnableCdn="true" ID="ScriptManager" />
<asp:UpdatePanel ID="ListBoxPanel" runat="server">
<ContentTemplate>
<asp:ListBox ID="lstSerialNumbers" runat="server" /><br />
<asp:TextBox ID="txtNewSn" runat="server" MaxLength="50" /><br />
<asp:Button ID="btnAddSn" runat="server" OnClick="btnAddSn_Click" Text="Add"/>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Test
{
public partial class AjaxTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAddSn_Click(object sender, EventArgs e)
{
lstSerialNumbers.Items.Add(new ListItem(txtNewSn.Text));
txtNewSn.Text = "";
}
}
}
讓我知道是否有任何其他信息,我可以提供。
問候, 安東尼
我剛剛配對的例子甚至更進一步,只是按鈕,並刪除了點擊處理程序中的任何代碼(但處理程序仍然存在,以確保當我點擊按鈕時觸發的東西) - 我仍然得到問題 - 這絕對與列表框無關! – Anthony