2010-11-01 4 views
5

Загружает список данных с помощью ajax и частичного представления (ascx) Но у меня есть проблема: мой ответ кэшируется. Я стараюсь писать Responce.Cache.SetExpires (DateTime.Now.AddDays (-1)) в ASCX файле, но это не помоглоasp.net mvc disable ajax cache

В ASP.NET WebForms Я решил эту проблему, написав Responce.Cache.SetExpires (DateTime.Now.AddDays (-1)) в codebehind. Так что я хотел бы знать, где я могу написать Responce.Cache.SetExpires (DateTime.Now.AddDays (-1)), чтобы отключить кеш.

+0

не следует кэшировать, если вы явно не сказать так, по директиве действий контроллера. может быть, это браузер? я слышал о кешировании ajax получает (но не сообщения). – RPM1984

+0

да страница кэшируется браузером. Но это легко решить, используя SetExpires. Как установить SetExpires с MVC? – takayoshi

ответ

12

Использовать jQuery?

$.ajax({ 
cache:false, 
... 
}); 

или Контроллер/Набор действий OutputCacheAttribute.

OutputCacheAttribute Class (System.Web.Mvc)

+0

Как именно OutputCacheAttribute поможет отключить кеш? –

+0

Этот заголовок ответа на управление атрибутом HTTP (контроль кеша, истекает и т. Д.). – takepara

+1

Я имел в виду, что здесь было бы неплохо дать пример кода, как использовать OutputCacheAttribute для этого: [OutputCache (NoStore = true, Duration = 0, VaryByParam = "*")] –

0

Вы должны использовать метод ajax POST для контроллера, который возвращает JsonResult, если вы хотите асинхронно загружать данные с сервера.

+1

Если вы получаете * данные, вы должны * не использовать POST. Посмотрите на HTTP-методы как CRUD: Post = Create, Get = Read, Put = Update, Delete = Delete –

+0

Неверный комментарий Arve. ASP.Net MVC не поддерживает операции REST, и вполне приемлемо использовать метод POST для извлечения данных на основе параметра. – dhochee