За все мои годы программирования на .NET я не сталкивался с такой странной ошибкой, как эта. Я обнаружил проблему, потому что некоторые элементы на странице стали связываться с помощью jQuery. После некоторой (нелепой) отладки я, наконец, обнаружил, что как только представление полностью завершает рендеринг себя и всех его дочерних частичных представлений, оно возвращается к произвольному, но согласованному расположению и перерисовывает себя.
Я уже два дня тяну свои волосы по этому поводу, и я просто не могу заставить их сделать себя только один раз!
Из-за отсутствия какой-либо лучшей идеи отладки я кропотливо добавил трассировщики логов по всему HTML, чтобы я мог определить, что может быть причиной этого. Например, этот код ($log
просто входит в консоль):
...
<script type="text/javascript">var x = 0; $log('1');</script>
<div id="new-ad-form">
<script type="text/javascript">x++;$log('1.5', x);</script>
...
даст
... <--- this happens before this snippet
1
1.5 1
...
10 <--- bottom of my form, after snippet
1.5 2 <--- beginning of part that runs again!
...
9 <--- this happens after this snippet
Я искал свою кодовую базу как высоко, так и низко, но НИЧЕГО не говорится, что она должна повторно визуализировать часть страницы. Мне интересно, имеет ли отношение к этому jQueryUI, так как #new-ad-form
является контейнером для диалогового окна jQueryUI.
Если это возможно, вот мой код инициализации для этого:
$('#new-ad-form').dialog({
autoOpen: false,
модальный: правда,
ширина: 470,
title: «Создать новое объявление»,
положение: ['центр', 35],
закрыть: AdEditor.reset
});