У меня есть веб-приложение ASP.NET 2.0, которое частично перемещается с помощью DropDownList
контролирует. Когда один из них изменяется, это вызывает обратную передачу, которая затем перенаправляется на другой URL-адрес в зависимости от того, что было выбрано в раскрывающемся списке.
Я заметил странное поведение при использовании кнопки «Назад» в браузере после использования раскрывающихся списков. Процедура такова:
div
), сделайте выбор. Страница перенаправляется на тот же URL-адрес, что и в первый раз, а не на то, на что она должна перенаправляться на основе этого другого раскрывающегося списка. Я пробовал это в Firefox 10 и IE9 и видел то же самое. Я посмотрел на вкладку Net в Firebug и увидел, что в POST для шага 3 есть ссылка на правильный элемент управления. Но когда я его отлаживаю, срабатывает обработчик событий для неправильного раскрывающегося списка (того, который использовался на шаге 1).
Код довольно прост и понятен. Пример разметки:
Выпадающие списки на самом деле не простые
элементов; Я вставляю элементы optgroup
с подходом, аналогичным this .
Пример C #:
ddlTest.Click += new EventHandler(ddlTest_SelectedIndexChanged);
И в ddlTest_SelectedIndexChanged
:
if (ddlTest.SelectedValue != "")
{
Response.Redirect(MyUtilClass.GetUrl(ddlTest.SelectedValue));
}
Что здесь происходит?
ОБНОВЛЕНИЕ 2/6/2012 : Я исправил это, проверив наличие содержимое Request ["__ EVENTTARGET"]
в моих обработчиках событий SelectedIndexChanged
. Однако мне все еще любопытно, почему это происходит. Почему повторяется первое событие? И почему это происходит только тогда, когда вторая обратная передача происходит из элемента управления ниже первого?