aspnet Web表单已添加具有相同键的项目

时间:2017-12-01 11:58:08

标签: asp.net webforms model-binding

我正在使用带有模型绑定的asp net 4.5.2;我有一个问题,每当我尝试在DropDownList上使用模型绑定时它会引发错误An item with the same key has already been added,但如果我将其更改为SQLDataSource,则错误消失。 提前致谢

更新

示例代码

<asp:ListView runat="server" ID="lvChairItem" DataKeyNames="ChairItemId" InsertItemPosition="FirstItem" OnItemCanceling="lv_ItemCanceling" OnItemUpdated="lv_ItemUpdated" OnItemEditing="lv_ItemEditing" ClientIDMode="AutoID" OnCallingDataMethods="ChairItem_CallingDataMethods" SelectMethod="GetByChairId" InsertMethod="InsertItem" UpdateMethod="UpdateItem" DeleteMethod="DeleteItem" ItemType="App.Model.ChairItem">
.............
<InsertItemTemplate>
    <tr>
        ........
        <td>
            <asp:DropDownList ID="ddlRoomId" CssClass="" DataValueField="Value" DataTextField="Text" AppendDataBoundItems="true" Text='<%# BindItem.RoomId %>' Width="100%" OnCallingDataMethods="Room_CallingDataMethods" SelectMethod="GetAllForDDL" runat="server" EnableViewState="true">
                <asp:ListItem Value="">--Select--</asp:ListItem>
            </asp:DropDownList>
        </td>
        ........
    </tr>
</InsertItemTemplate>
.....................
</asp:ListView>

1 个答案:

答案 0 :(得分:0)

然后问题可能是因为您在页面加载时填充它而不检查Page.IsPostBack。您不想重新填充每个回发的控件。您确实希望(通常)允许ViewState。所以我会重新启用,并将你的populate方法包装在(而不是page.ispostback)中。