Введение: Anthem — это полезная платформа Ajax, поддерживающая ASP.NET 1.1, 2.0.
Поскольку все элементы управления в этой платформе наследуются от собственных серверных элементов управления ASP.NET, почти все свойства и поведение этих элементов управления сохраняются (за исключением изменения их PostBack на необновляемый вызов CallBack). Таким образом, кривая обучения очень мягкая.
Сегодня я столкнулся с неприятной проблемой отладки при использовании Anthem, которая описана здесь.
В приведенном ниже коде я использую элемент управления Anthem.Repeater.
EnableCaching="false">
AutoUpdateAfterCallBack="False">
<Шаблон заголовка>
<тд>
Выбрать
<тд>
Имена файлов и чертежей
<тд>
Должно быть отправлено
<тд>
Это оригинально?
<тд>
Примечания
|
<Шаблон элемента>
<тр>
<тд>
' />
<тд>
' />
<тд>
' Width="30" />
<тд>
'
RepeatDirection="Горизонтально">
Исходный
Копировать
<тд>
таблица>
При запуске этого кода иногда возникает ошибка JS: «Неизвестная ошибка времени выполнения».
И эта ошибка возникает только в определенных ситуациях и является нормальной в других подобных ситуациях.
К счастью, VS 2005 предоставляет очень мощные возможности отладки сценариев на стороне клиента. Наконец я определил ошибку в строке кода, сгенерированной Anthem:
control.innerHTML = result.controls[controlID];
Проверив соответствующую информацию, я обнаружил, что в IE при присвоении значения атрибуту InnerHTML будет проверяться присвоенное значение. Если он сформирован неправильно, может возникнуть «неизвестная ошибка времени выполнения». Поэтому я решил, что с HTML-выводом anthem.Repeater что-то не так. Как видно из двух выделенных строк в приведенном выше коде, метка таблицы находится за пределами повторителя. Поэтому сам Репитер выдает серию tr, не совсем корректно сформированную.
Поэтому я поместил начало и конец тегов таблицы в HeaderTemplate и FooterTemplate повторителя соответственно, и проблема была решена.
(Причина, по которой я раньше помещал тег таблицы снаружи, заключалась в том, что, когда я помещал его в HeaderTemplate и FooterTemplate, я не знаю, почему дизайнер VS не мог переключиться на представление дизайна. Изменение его таким образом может решить проблему. )
После успешной модификации код выглядит следующим образом:
EnableCaching="false">
<Шаблон заголовка>
<тд>
Выбрать
<тд>
Имена файлов и чертежей
<тд>
Должно быть отправлено
<тд>
Это оригинально?
<тд>
Примечания
|
<Шаблон элемента>
<тр>
<тд>
' />
<тд>
' />
<тд>
' Width="30" />
<тд>
'
RepeatDirection="Горизонтально">
Исходный
Копировать
<тд>