Ich habe eine Webseite, auf der Benutzer Kundenkontaktinformationen eingeben müssen. Sie können von 0 bis zu einer unendlichen Anzahl von Kontakten eingeben.
Ich habe diese Seite Code auf Seite erstellt:
<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"/>
In meinem Code dahinter habe ich dies hinzugefügt:
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;
}
Dieser Code funktioniert nicht, weil der ViewState nicht mit der Speicherung all dieser Steuerdaten umgehen kann. Allerdings kann ich nicht denken, einen anderen Weg, um die Steuerelemente zu speichern, die bereits hinzugefügt wurden.
Der Viewstate des asp:PlaceHolder
Steuerelement speichert nichts, und ich brauche die Steuerelemente gespeichert werden, so dass, wenn ein Benutzer in einige Daten in das erste Steuerelement, dass die Daten nicht verloren gehen, wenn sie eine zweite hinzufügen und so weiter.