Обратная передача IE6 в asp.net
-
03-07-2019 - |
Вопрос
У меня есть страница, содержащая пользовательский элемент управления, который представляет собой просто персонализированный выпадающий список .Я присваиваю каждому элементу атрибут onClick=__doPostBack('actrl',0)
.
когда я нажимаю на страницу, обратная отправка происходит нормально, и я получаю ожидаемые результаты.Однако в IE6 моя страница не изменяется на новые значения, загруженные с сервера.
Самое странное, что когда я нажимаю shift + на ссылку, страница перезагружается нормально со всеми изменениями.
Я пытался отключить кэширование на странице, но безуспешно.
используя весь этот код
Response.CacheControl = "no-cache"
Response.AddHeader("Pragma", "no-cache")
Response.Expires = -1
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1))
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Page.Response.Cache.SetExpires(DateTime.Now.AddDays(-30))
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)
Page.Response.Cache.SetNoServerCaching()
Page.Response.Cache.SetNoStore()
Response.Cache.SetNoStore()
Также, когда я отлаживаю приложение, я вижу, что сгенерированный html-код для рендеринга правильный, но он не рендерится.
Эта проблема возникает только в IE6.
Решение
Это известная ошибка IE6 (# 223) с волшебными запросами HTTP get.
Смотрите ошибку здесь:http://webbugtrack.blogspot.com/2007/09/bug-223-magical-http-get-requests-in.html
Это происходит, когда встроенный обработчик событий вызывает изменение страницы в IE6.
Другие советы
Проблема в том, что IE6 не перезагружает страницу с сервера (она просто захватывает кэшированную копию), однако в сообщении формы IE6 ДОЛЖЕН перезагрузиться.Почему вы добавляете _doPostBack в качестве атрибута, они должны быть автоматически сгенерированы в любом элементе управления asp.net, который необходимо отправить обратно.