Как я могу предотвратить страницу для перехода к ключевой позиции после отказавшей проверки?

У меня есть простая aspx страница с несколькими TextBoxes и кнопкой отправки. Некоторые поля требуются, и ниже кнопки ValidationSummary. Заполнять форма больше, чем экранная высота, таким образом, нужно прокрутить вниз для достижения кнопки отправки. Если я не заполняю все обязательные поля и нажимаю, отправляют сбои проверки как ожидалось, и сводка проверки отображает некоторые информационные сообщения ниже кнопки. Проверка происходит на клиенте, и никакая обратная передача не происходит.

Так это все работы, как пожелали. Но тревожащий то, что страница перемещается ("переходит") к ключевой позиции, когда я нажимаю на кнопку отправки. Для наблюдения сводки проверки, нужно спустить страницу снова.

Я попытался установить ShowSummary свойство к false (который не имеет большого смысла): проверка все еще работает (никакая обратная передача), но в этом случае страница не перемещается в ключевую позицию. Таким образом, проблема, кажется, зависит от рендеринга текстов проверки.

Существует ли способ предотвратить этот переход страницы?

Заранее спасибо!

Обновление:

Поведение, которое я описал выше, кажется, не зависимый браузера. Я протестировал в пяти различных браузерах, и это - везде то же.

24
задан Slauma 10 April 2010 в 15:38
поделиться

2 ответа

Я задал вопрос на 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" к валидаторам для принудительной обратной передачи. Тоже работает, но цена - искусственный постбэк.

32
ответ дан 28 November 2019 в 22:36
поделиться

Вы можете использовать свойство Page MaintainScrollPositionOnPostBack:

В коде программной части:

Page.MaintainScrollPositionOnPostBack = true;

или в вашей веб-форме:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %>
23
ответ дан 28 November 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: