Если у меня есть список <Персона>, где личность определяется классом
class Person
{
string Forename
{
get;set;
}
string Surname
{
get; set;
}
}
И я привязываю его к элементу управления ретранслятором asp, который выглядит следующим образом:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Label ID="lblForename" runat="server" Text="Forname" AssociatedControlID="txtForename" />
<asp:TextBox ID="txtForename" runat="server" Text='<%# ((Person)Container.DataItem).Forename %>' />
<br />
<asp:Label ID="lblSurname" runat="server" Text="Forname" AssociatedControlID="txtSurname" />
<asp:TextBox ID="txtSurname" runat="server" Text='<%# ((Person)Container.DataItem).Surname %>' />
<br />
</ItemTemplate>
</asp:Repeater>
Каков наилучший способ вернуть данные, которые пользователь вводит, в объекты?
Я думал, что весь смысл привязки данных заключается в том, что это было эффективно обработано для вас, но когда я проверяю коллекцию Repeater1.Items, никаких изменений не происходит. Должен ли я написать код, чтобы сделать что-то вроде
//This is only intended to be pseudo code
for each item in Repeater1.Items
((Person)item.DataItem).Forename = item.FindControl("txtForname").Text;
end for
Если это так, почему свойство DataItem всегда пустое?
Дополнительная информация:
Я уже называю код эффектом
this.Repeater1.DataSource = this.PersonList;
this.Repeater1.DataBind();
Я пытался использовать Bind("Forename")
, но, похоже, это не возвращает информацию из TextBox обратно в объект, нужно ли это делать вручную?