ASP.NET - выбор кэша DropDownList в Google Chrome - PullRequest
2 голосов
/ 22 мая 2010

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

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

Допустим, первый раскрывающийся список имеет значения:

  • VALUE1
  • VALUE2
  • VALUE3

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

  • DUMBO1
  • DUMBO2
  • DUMBO3

Я добавляю элементв мою корзину.

Экран говорит: VALUE1, DUMBO1

База данных говорит: VALUE1, DUMBO1

Я нажимаю Checkout.

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

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

Экран говорит: VALUE1, DUMBO1

База данных говорит: VALUE1, DUMBO1

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

MOMENTARILY Экран говорит: VALUE2, DUMBO1

База данных говорит: VALUE1, DUMBO1

ТОГДА ПОСЛЕ ОТЧЕТА ОТ DROPDOWNLIST_SELECTIONCHANGED EVENT

Экран говорит: VALUE1, DUMBO1

База данных говорит: VALUE1, DUMBO1

Hit Checkout.

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

Вернуться назад.

Экран говорит: VALUE2 , DUMBO1

База данных говорит: VALUE1, DUMBO1

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

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

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

1 Ответ

0 голосов
/ 25 июня 2010

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

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

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

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

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

Кто-нибудь может помочь с этим?

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

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

...