У меня есть простая aspx страница с несколькими TextBoxes и кнопкой отправки. Некоторые поля требуются, и ниже кнопки ValidationSummary. Заполнять форма больше, чем экранная высота, таким образом, нужно прокрутить вниз для достижения кнопки отправки. Если я не заполняю все обязательные поля и нажимаю, отправляют сбои проверки как ожидалось, и сводка проверки отображает некоторые информационные сообщения ниже кнопки. Проверка происходит на клиенте, и никакая обратная передача не происходит.
Так это все работы, как пожелали. Но тревожащий то, что страница перемещается ("переходит") к ключевой позиции, когда я нажимаю на кнопку отправки. Для наблюдения сводки проверки, нужно спустить страницу снова.
Я попытался установить ShowSummary
свойство к false
(который не имеет большого смысла): проверка все еще работает (никакая обратная передача), но в этом случае страница не перемещается в ключевую позицию. Таким образом, проблема, кажется, зависит от рендеринга текстов проверки.
Существует ли способ предотвратить этот переход страницы?
Заранее спасибо!
Обновление:
Поведение, которое я описал выше, кажется, не зависимый браузера. Я протестировал в пяти различных браузерах, и это - везде то же.
Я задал вопрос на asp.net ( http://forums.asp.net/p/1545969/3779312.aspx ) и получил в ответ два решения. Лучше всего этот фрагмент Javascript, который поддерживает позицию прокрутки:
<script type="text/javascript">
window.scrollTo = function( x,y )
{
return true;
}
</script>
Это только для того, чтобы поместить на страницу и некуда звонить.
Другое решение аналогично предложению RioTera здесь (с использованием MaintainScrollPositionOnPostBack
), но добавляет EnableClientScript = "false"
к валидаторам для принудительной обратной передачи. Тоже работает, но цена - искусственный постбэк.
Вы можете использовать свойство Page MaintainScrollPositionOnPostBack:
В коде программной части:
Page.MaintainScrollPositionOnPostBack = true;
или в вашей веб-форме:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %>