Динамическое добавление элемента управления в список элементов управления

У меня есть веб-страница, на которой пользователи должны вводить контактную информацию клиента. Они могут вводить от 0 до бесконечного числа контактов.

Я создал этот код страницы на странице:

<ajaxToolkit:ToolkitScriptManager runat="Server" EnablePartialRendering="true" ID="ScriptManager1" />
<asp:PlaceHolder ID="phCustomerContacts" runat="server" EnableViewState="true">/asp:PlaceHolder>
<asp:LinkButton ID="btnAddContact" runat="server" OnClick="btnAddContact_Click" CssClass="LinkButton" Text="Add Contact"/>

В моем коде позади я добавил следующее:

   public void btnAddContact_Click(object sender, EventArgs e)
    {
        IList<CustomerContactProfile> customerContacts = new List<CustomerContactProfile>();
        if (ViewState["CustomerContactList"] != null)
            customerContacts = (List<CustomerContactProfile>)ViewState["CustomerContactList"];
        CustomerContactProfile contactProfile = (CustomerContactProfile)LoadControl("~/Controls/Embedded/CustomerContactProfile.ascx");
        customerContacts.Add(contactProfile);

        foreach (CustomerContactProfile contact in customerContacts)
            phCustomerContacts.Controls.Add(contact);

        ViewState["CustomerContactList"] = customerContacts;
    }

Этот код не работает, потому что ViewState может ' t обрабатывать хранение всех этих управляющих данных. Однако я не могу придумать другого способа сохранить уже добавленные элементы управления.

Состояние просмотра элемента управления asp: PlaceHolder ничего не сохраняет, и мне нужно, чтобы элементы управления были сохранены, чтобы, если пользователь вводит некоторые данные в первый элемент управления, данные не теряются когда добавляют второй и т. д.

8
задан Cody Gray 7 February 2011 в 14:13
поделиться