Я не вижу ничего обязательно неправильного в элементе itemtemplate, вероятно, будет полезно, если вы предоставите весь код повторителя в качестве прямого копирования / вставки на случай, если возникнут какие-либо другие ошибки.
Другой подход, который вы можете использоватьнеобходимо добавить связанное событие элемента данных повторителя и затем захватить скрытое поле в событии.Если у вас есть скрытый ввод, вы можете просто установить его значение.
Код повторителя:
<asp:Repeater ID='myRepeater' runat="server" OnItemDataBound='myRepeater_OnItemDataBound'>
<ItemTemplate>
<asp:HiddenField ID='myHidden' runat="server" />
</ItemTemplate>
</asp:Repeater>
И код события:
protected void myRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var myHidden = (HiddenField)e.Item.FindControl("myHidden");
myHidden.Value = e.Item.ItemIndex.ToString();
}
}