2009-12-15 5 views
1

У меня есть две страницы aspx (A, B), созданные с использованием ASP.NET MVC. В файле A у меня есть несколько флажков и текстовых полей.Как принудительно обновлять страницу при нажатии кнопки «Назад» в сафари MAC

Когда я перехожу на страницу B и пытаюсь перейти на страницу A, нажав кнопку возврата браузера (в MAC Safari), страница не обновляется. Страница сохраняет старые значения (для флажков и текстовых полей).

Когда у меня была точка останова на стороне сервера. Я могу получить удар.

Я уверен, что вызывается метод действия на стороне сервера. Существует некоторая проблема с браузером MAC SAFARI.

Я попытался использовать один и тот же вариант использования в других браузерах IE и FF, он работает корректно.

Довольно просто, но я получаю правильный ответ во время поиска.

Может ли кто-нибудь предложить работу для этого в MAC.?

Спасибо,

Vijay

ответ

1

Я не проверял, но я уверен, что Safari для Mac не единственный браузер для этого. Это связано с тем, как работает кеш браузера. Когда вы вернетесь в историю браузера, Safari (и AFAIK Firefox также) не запрашивает страницу снова. Вместо этого Safari/Webkit сохраняет копию в памяти предыдущей посещенной страницы, так что возвращение почти мгновенно.

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

Отключение кеша для действия «A» должно сделать трюк, так как это должно заставить браузер снова получить страницу (и сбросить значение входов). Что-то вроде этого:

[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
public ActionResult A() 
{ 
    return View(); 
} 

Если это не решает проблему, возможно, придется очистить значения с JavaScript в OnLoad случае веб-страницы (это должно быть довольно тривиально сделать с JQuery). Что-то вроде:

$(document).ready(function() { 

    $('input').each(function() { 
     if($(this).attr('type') == 'checkbox') { 
       this.checked=false; 
     } else { 
       $(this).val(''); 
     } 
    } 

}) 

Примечания: код не тестировалось, но я надеюсь, что это помогает (если отключить кэш страницы не удается) :)

+0

Да, это уже сделано. У меня проблема только в MAC-стороне мира, я полагаю, если есть проблема на стороне сервера, то она будет отражена во всех браузерах вправо.? – vijaysylvester

+0

Нет, нет, я не хотел подразумевать, что проблема была на стороне сервера. Я добавил более подробное объяснение моему первоначальному ответу. – salgiza

+0

это работало очень хорошо для меня, большое спасибо –

-1

Попробуйте установить автозаполнения = "OFF" на форме

Это также происходит, если вы обновите страницу на светлячок.

+0

ничего общего с автозаполнением. У меня также есть значения флажка. Угадайте, какой фрагмент javascript должен решить эту проблему. – vijaysylvester

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