2010-05-21 3 views
2

Я столкнулся с проблемой кэширования с Google Chrome и Safari на моей странице в корзине. В корзине есть два раскрывающихся списка. Когда вы нажимаете кнопку проверки после изменения значений в раскрывающихся списках, она фиксирует, что выбрано в списках в базе данных.ASP.NET - кеширование Google Chrome Выбор DropDownList

Немного сложно объяснить неожиданное поведение, поэтому я попытаюсь написать его шаг за шагом с иллюстрацией моей проблемы.

Позволяет сказать первый выпадающий список имеет значение:

  • VALUE1
  • VALUE2
  • Value3

И второй выпадающий список имеет значение:

  • DUMBO1
  • DUMBO2
  • DUMBO3

добавить элемент в моей корзине.

экрана Говорит: VALUE1, DUMBO1

База Говорит: VALUE1, DUMBO1

я ударил Checkout.

базы данных говорит: VALUE1, DUMBO1 (я не могу видеть, выпадающие списки после того, как я ударил проверку, потому что я нахожусь не на странице корзины)

Я нажал кнопку назад.

экрана Говорит: VALUE1, DUMBO1

Database Says: VALUE1, DUMBO1

Я падаю вниз комбо VALUE1 и выберите значение2, VALUE2 выбирается на мгновение, а затем посты сайта назад и VALUE1 повторно выбран в выпадающем списке (от перезагрузки из БД)

моментально экран Говорит: значение2, DUMBO1

База Говорит: VALUE1, DUMBO1

ТО ПОСЛЕ Postback ОТ DROPDOWNLIST_SELECTIONCHANGED EVENT

экрана Говорит: VALUE1, DUMBO1

База Говорит: VALUE1, DUMBO1

Hit Проверять, выписываться.

База Говорит VALUE1, DUMBO1 (я не могу видеть, выпадающие списки после того, как я ударил проверку, потому что я нахожусь не на странице корзины)

ВЕРНУТЬСЯ.

экран Говорит: VALUE2, DUMBO1

База Говорит: VALUE1, DUMBO1

Так что кажется, что это запоминание моего выбора VALUE2 даже если он спрыгнул обратно VALUE1, прежде чем я проверил.

Это проблема кэширования, однако у меня есть некоторый код без кеша, чтобы предотвратить кеширование этой страницы, которая отлично работает в Firefox и Internet Explorer, но, похоже, не работает в Chrome и Safari. Я в основном возвращаюсь в заголовки для страницы корзины: no-cache, no-store и должен-revalidate, чтобы попытаться предотвратить кеширование, но на основе этого сценария, похоже, все равно кэширует страницу и не перезагружает ее, когда я нажмите кнопку «Назад».

Я открыт для любых решений или предложений на данный момент. Благодаря!

+0

Да, я устанавливаю значения выпадающего списка на странице Load, и я устанавливаю значения только в том случае, если это не обратная передача, как вы предлагали. – Fake

+0

Можете ли вы сварить это до очень простого теста (у вас было много шагов) с кодом, и тогда люди смогут лучше воспроизвести его. – Kinlan

ответ

0

У меня была аналогичная проблема, и я провел несколько дней только для того, чтобы найти ответ.

Предположим, у нас есть раскрывающийся список, заполненный цветами. каждый раз, когда я меняю значение, я делаю частичную обратную передачу с помощью ajax, чтобы сохранить значение и делать еще пару вещей, таких как проверка акций.

Я выбираю (в этом порядке): красный, белый, синий, зеленый.

после этого я ударил чек, и когда я возвращаюсь к своему удивлению, выбирается красный цвет. Я возвращаюсь назад, и я получаю белый выбор. затем синий и, наконец, зеленый после возвращения четыре раза.

Я пробовал в IE и FF и нашел там, что он отлично работает, так что это не ошибка в коде.это должно быть что-то с хром.

любой может помочь с этим?

Редактировать: Я пробовал с другой веб-страницей, которую я создаю, и там она работает нормально, но я не могу найти различий между ними, которые могут вызвать ее.

Edit2: Я нашел способ «решить» это с помощью ScriptManager.RegisterStartupScript на навигационном событии, чтобы написать сценарий, который устанавливает значения правильно вместо того, чтобы делать это в codebehind. Это не очень изящный способ, но это сработало для меня, и я надеюсь на других с аналогичной проблемой.

Смежные вопросы