ASP.NET: как остановить переход страницы при использовании AutoPostBack?
Я использую ASP.NET, и в элементе управления мастера есть переключатели, где, если выбрано "Да", панель отображается, но если выбрано "Нет", панель скрыта. У меня для MaintainScrollPositionOnPostBack установлено значение True, хотя событие ActiveStepChanged меняет его на False, поэтому при нажатии кнопки "Далее" для просмотра следующего шага мастера оно начинается в верхней части страницы. Проблема заключается в том, что после нажатия кнопки "Далее" при первом нажатии радиокнопки она переходит в верхнюю часть страницы (страница сохраняет свое положение при каждом нажатии радиокнопки после первого раза). Как я могу остановить его от прыжков в первый раз?
3 ответа
Вы можете остановить полное обновление страницы, поместив свой элемент управления в панель обновления.
Задавать Page.MaintainScrollPositionOnPostBack = true
сохранить текущую позицию экрана при обратной передаче.
Это проще, чем пытаться сделать это самостоятельно с помощью JavaScript или любым другим способом.
Я знаю, что на этот вопрос ответили, но я не могу использовать ajax для проекта, над которым я работал, у меня была похожая проблема, и я нашел приемлемый обходной путь. У меня есть пользовательский элемент управления на странице, которая также имеет главную страницу. В пользовательском элементе управления есть форма ввода, в нижней части которой есть несколько элементов управления, запускающих обратную передачу. Основной контент div на главной странице делает это для прокрутки (потому что он слишком большой). Решение, которое я нашел, заключалось в настройке фокуса страницы на элемент управления событиями, вызванными обратной передачей в коде позади C#. Например:
protected void cbShip_CheckedChanged(object sender, EventArgs e)
{
if (cbShip.Checked)
{
pnlShip.Visible = true;
Page.SetFocus(ddlShipCountry);
}
else
{
pnlShip.Visible = false;
}
return;
}