Обратная передача ASP.NET из неправильного раскрывающегося списка после использования кнопки «Назад» в браузере

У меня есть веб-приложение ASP.NET 2.0, которое частично перемещается с помощью DropDownList контролирует. Когда один из них изменяется, это вызывает обратную передачу, которая затем перенаправляется на другой URL-адрес в зависимости от того, что было выбрано в раскрывающемся списке.

Я заметил странное поведение при использовании кнопки «Назад» в браузере после использования раскрывающихся списков. Процедура такова:

  1. Сделайте выбор в одном из раскрывающихся списков, вызывая обратную передачу и перенаправление. Хорошо до сих пор.
  2. Нажмите кнопку "Назад" в браузере.
  3. В другом раскрывающемся меню навигации под тем, что использовалось до (все они содержатся в одном 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 . Однако мне все еще любопытно, почему это происходит. Почему повторяется первое событие? И почему это происходит только тогда, когда вторая обратная передача происходит из элемента управления ниже первого?

5
задан Tom Hamming 6 November 2012 в 21:51
поделиться