Как полностью обновить (ctrl + f5) страницу, используя asp.net? - PullRequest
3 голосов
/ 19 августа 2011

Я сейчас работаю с проектом asp.net (Dotnetnuke). Мне нужно динамически менять изображение на странице. При нажатии кнопки замены (asp: Button), иногда изображение не может динамически заменить страницу.Нажав Ctrl + F5, он изменится. Мой вопрос: как перезагрузить кэш с помощью кода C #?

Другая проблема заключается в том, что иногда я заменяю изображение на странице, сохраняя некоторые значения в базе данных, и нажимаю Ctrl +F5 для внесения изменений на странице. Но при нажатии Ctrl + F5 открывается диалоговое окно с кнопками отмены или повторной попытки (например, в Firefox и т. Д.). При нажатии любой из них будет сохранено то же значение в базе данных. Если мы снова обновимна странице значение в данных составляет 3 раза.

Ответы [ 3 ]

2 голосов
/ 08 сентября 2011

вы не можете очистить кеш браузера. Единственная идея - объявить переменную сеанса в коде c # при загрузке страницы и установить ее значение равным 1 в самый первый раз

if (!IsPostBack)
            {
Session["refresh"]="1"
}

вам нужно будет установить переменную сеанса в событии кнопки загрузки изображения Session ["refresh"] = "1" Затем создайте кнопку обновления. В событии кнопки выполните следующие действия. Вот и все. После завершения загрузки нажмите кнопку обновления. Затем она работает как кнопка ctrl + f5. Если вы не установили значение сеанса 0 в событии кнопки обновления, последнее событие снова происходит. та же задача выполняется, если вы не установили переменную сеанса 0.

   if(Session["refresh"].ToString()=="1")
   {
      Response.Write("<script type='text/javascript'>locaton.reload()</script>");
      Session["refresh"]="0";
    }
2 голосов
/ 19 августа 2011

JavaScript не может получить доступ к дампу кеша для вас, извините. C # работает с сервером, а не с клиентом, поэтому это тоже не поможет.

Если вы хотите разбить кеш для определенных элементов на странице, вы можете добавить случайный параметр

<img src="a.gif?x=123456"> (мне нравится использовать отметку времени)

Либо, если это для целей тестирования, отключите кеш в вашем браузере.

1 голос
/ 19 августа 2011

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

 <%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None" Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" %>

Функциональность кэширования в ASP.NET довольно обширна. Я рекомендую вам потратить некоторое время на изучение приложения Директивы ; в основном страницы и управления.

...