2013-02-20 11 views
7

Sto utilizzando ASP.NET MVC Wrapper nell'applicazione MVC4.Come disabilitare la cache di richiesta "Lettura" nell'origine dati UI di Kendo

Tutto funziona bene oltre ad una questione specifica: ho definito un datasource per Kendo UI griglia, e quando i carichi di visualizzazione, l'azione di lettura è essere chiamato come previsto.

Tuttavia, quando la pagina viene ricaricata, la richiesta "lettura" ottiene una risposta con 304 risultati.

Come disabilitare la cache tramite la configurazione dell'origine dati?

risposta

0

Non può essere il controller tramite la configurazione Datasource. Dovrai applicare un attributo al metodo di lettura sul controller per impedire la memorizzazione nella cache.

Un'alternativa sarebbe applicare l'attributo [HttpPost] al metodo del controller. Quindi configurare l'origine dati per NON utilizzare il metodo GET, nel qual caso verrà utilizzato il metodo POST per impostazione predefinita.

+0

Non ho visto alcun attributo relativo al "caching" per le azioni di lettura nel wrapper dell'origine dati – ZENIT

+0

sì, questo è quello che intendevo ... non è possibile controllare la memorizzazione nella cache attraverso la configurazione di Datasource ... attraverso il wrapper ... è necessario specificare gli attributi sull'azione del controller di lettura che il wrapper sta chiamando. –

+0

Come soluzione temporanea sto usando l'overload 'Read' con' routeValues', e poi passando un valore casuale per l'attributo non esistente (es. Mocking '& _ = 1234567890') – ZENIT

8

.read (leggi => read.Action ("Azione", "Controller", nuova area di {= "Area"}). Tipo (HttpVerbs.Post))

+0

Questo è il modo corretto per dire alla griglia di kendoui di interrogare l'origine dati ogni volta che visualizza i dati. Inoltre, non è necessario contrassegnare l'azione del controller per accettare il post. – cobolstinks

+0

Ha funzionato come un fascino. Ho provato [OutputCache (Duration = 0, NoStore = true)], ho provato ad aggiornare la griglia, disattivando il caching a livello di griglia Kendo (MVC), ma non appena ho fatto la funzione di controllo annotare [HttpPost], tutti i problemi (compreso il paging) è stato risolto. Avrei potuto facilmente sprecare altri 4 giorni su questo. Arigatou. –

12

Siete in grado di impostare il ' cache 'attributo nel tuo Kendo dataSource a false, che apparentemente (NOTA: non l'ho ancora testato) costringerà le pagine richieste a essere recuperate di recente ad ogni richiesta.

L'impostazione della cache su false consente di accodare un parametro "_ = [TIMESTAMP]" alla richiesta, che, se necessario, può essere analizzato sul lato server/controller per evitare le operazioni della cache sul lato server.

Nota anche che è possibile specificare il comportamento della cache per operazione di trasporto Kendo (cioè, può essere al livello delle operazioni CRUD o per l'intero trasporto).

vedere qui: http://docs.kendoui.com/api/framework/datasource#configuration-transport.read.cache-Boolean

Codice:

transport: { 
    read: { 
     cache: false 
    } 
} 
+1

Stavo per cambiare idea al Kendo UI Grid dell'utente perché c'erano alcuni errori quando si cambiava l'indice della pagina sulla griglia. Era solo tornare alla pagina 1 quando ho provato a cambiare l'indice della pagina. Grazie per la tua risposta. –

+1

Dice sopra che sta usando il wrapper MVC. Questa opzione non è disponibile usando il wrapper. – Phil

+0

Ottimo, mi fa risparmiare la giornata..Grazie per l'ottima ricerca –

3

si può provare la decorazione sull'azione del controller lato server che i carichi guardano con

[OutputCache(Duration = 0, NoStore = true)] 

attributo, per esempio

public class OrdersController : Controller 
{ 
    [httpGet] 
    [OutputCache(NoStore = true, Duration = 0)] 
    public ActionResult Orders(string userId) 
    { 
     // your code 
     return View(viewModel); 
    } 
} 

NoStore - Un valore booleano che determina se impedire la memorizzazione secondaria delle informazioni sensibili Duration - Il tempo, in secondi, in cui la pagina o il controllo utente viene memorizzato nella cache. L'impostazione di questo attributo su una pagina o sul controllo utente stabilisce una politica di scadenza per le risposte HTTP dall'oggetto e memorizzerà automaticamente nella cache l'output della pagina o del controllo utente.

Problemi correlati