У меня есть простая форма с несколькими обязательными полевыми валидаторами и итоговым контролем валидации. Когда я отправляю форму, проверка client приведет к тому, что форма перейдет в начало страницы. Если я удалю сводку проверки, страница не переместится.
Вот краткий пример:
<asp:TextBox ID="test" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="testrequired" runat="server" ControlToValidate="test">*</asp:RequiredFieldValidator>
<asp:ValidationSummary ID="summary" runat="server" />
<asp:Button ID="submit" runat="server" Text="submit" />
Я попытался установить SetFocusOnError="true"
в обязательном поле проверки и MaintainScrollPositionOnPostback="true"
для хихиканья - даже если это не обратная передача - без какой-либо удачи. Есть ли известное решение этой проблемы?
EDIT:
Я обнаружил проблему в js, сгенерированном WebResource.axd. Кажется, сводится к одной строке в функции ValidationSummaryOnSubmit()
.
line 534: window.scrollTo(0,0);
Есть идеи, как это убрать или обойти?
EDIT2:
Быстрая работа на данный момент:
- установить
EnableClientScript="false"
для всех элементов управления проверкой (отключение проверки клиента)
- установить
MaintainScrollPositionOnPostback="true"
в директиве Page
Все еще надеемся на решение на стороне клиента ...
EDIT3:
Кажется, лучше обойти это, просто переопределив функцию window.scrollTo()
, чтобы она ничего не делала при вызове скриптом проверки:
<script type="text/javascript">
window.scrollTo = function() { }
</script>
Добавление вышеперечисленного в любом месте на странице оставляет в силе проверку клиента, но отключает метод window.scrollTo()
по всей странице