Повторитель ASPX Непоследовательное / необъяснимое поведение
Я получаю противоречивое поведение при использовании повторителя. У меня есть повторитель с текстовыми полями внутри заполнены из DataTable. Некоторое время все работает отлично, затем появляется следующая ошибка.
Найдено несколько элементов управления с одинаковым идентификатором 'txt'. FindControl требует, чтобы элементы управления имели уникальные идентификаторы.
Кажется, ошибка возникает во втором сеансе:
Rebuild & Debug: все работает отлично.
Остановите отладку и снова выполните отладку: ошибка происходит неограниченное время до восстановления.
Есть идеи, что может вызвать это? Заранее спасибо.
2 ответа
Ошибка показывает, что вы используете тот же идентификатор для текстовых полей. Вы должны использовать динамические идентификаторы для текстовых полей, таких как "txt_data_{uniqueId}" . Здесь uniqueId может быть индексом или может использовать ваш первичный ключ данных.
Здесь вы можете увидеть ответ для тега изображения: https://forums.asp.net/t/1655369.aspx?Multiple+controls+with+the+same+ID
Это поможет вам: установить идентификатор элементов в повторителе
Решение было довольно простым, но меня сбило с толку тот факт, что это только начало происходить во второй сессии отладки.
Я использовал свой собственный элемент управления TextBox с детьми, добавив следующее в свое текстовое поле, чтобы решить эту проблему.
public override string ID
{
get
{
return base.ID;
}
set
{
base.ID = value;
if(mTextBox != null)
mTextBox.ID = "txt" + base.ID;
}
}
Однако я все еще хотел бы понять, почему эта проблема только начинается со второго сеанса отладки. Я мог перезагружать страницу более 10 раз в первом сеансе без каких-либо ошибок, и только при возобновлении отладки ошибка могла появиться.
Единственная причина, о которой я могу думать, заключается в том, что ретранслятор aspx кэширует данные, которые конфликтуют?