Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Disabilitare post o cache sul tasto back

    Ciao a tutti.

    Io ho un pagina MVC con un form in cui invio un form con dei file.

    Dopo il post io ritorno sulla stessa pagina dove mi compare nuovamente il form con dai salvati e i documenti inseriti.



    Io ho questo problema.


    Tramite javascript rimuovo i documenti dal form e invio nuovamente il form.


    Tutto mi funziona correttamente i documenti cancellati non escono, pero se clicco nel browser torna indietro questi mi compaiono nella vista anche se realmente non esistono più.


    sicuramente c'è un problema di cache.


    ho aggiunto quindi nel controller della view questo codice


    [OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
    public class MyController : BaseController


    A questo punto quando io premo sul bottone torna indietro mi dice che la pagina é scaduta e che non é possibile più visualizzare il contenuto oppure premendo su un bottone posso rinviare i dati alla pagina.
    questa cosa mi ritorna un errore perché i dati dei file non sono più presenti.


    vorrei sapere se esiste un'altra soluzione per non far comparire la pagina che mi dice che la pagina é scaduta ma che mi mostra direttamente la vista nuova senza i vecchi dati

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    27
    Ciao,

    non programmo in ASP, ma in PHP utilizzo un redirect verso la pagina referente ovvero
    codice:
    $_SERVER["HTTP_REFERER"]
    .

    Così facendo elimini il problema. Immagino in ASP ci sia qualcosa di simile.

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,468
    e' asp.net, non asp

    la pressione del tasto indietro non dovrebbe essere proprio un pensiero, fa parte dell'ambiente..

    per la vista con i nuovi dati dovresti fare tutto lato client con jQuery..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    27
    Quote Originariamente inviata da djciko Visualizza il messaggio
    e' asp.net, non asp
    Giusto chiedo venia

    Quote Originariamente inviata da djciko Visualizza il messaggio
    la pressione del tasto indietro non dovrebbe essere proprio un pensiero, fa parte dell'ambiente..
    Non sono molto daccordo, cioè ci sta che ci si dovrebbe concentrare su altro, ma dato che l'utente medio tende ad usare regolarmente il tasto indietro, a mio parere per una migliore UX è meglio evitare di farlo tornare alla pagina che effettua il salvataggio vero e proprio, sovrascrivendola con un reindirizzamento.

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,468
    intendevo che se l'utente preme il bottone indietro, vede la pagina precedente con la situazione precedente, e dovrebbe andare bene cosi', lasciando tutto com'e' e non svuotando la cache.

    cioe', lo sa che ha premuto il tasto back che va indietro nella History: dovrebbe essere giusto vedere una cosa vecchia, il tasto e' fatto appunto per andare indietro nella cronologia.

    al limite si puo' mettere un tasto sulla pagina per il refresh

    non ho capito comunque quando effettui il redirect
    Ultima modifica di djciko; 08-01-2019 a 18:23

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    27
    Si capisco il tuo punto di vista e sono daccordo con te, il problema è che l'utente medio non è esperto di navigazione, internet, browser e via dicendo.

    Se lasci così com'è l'utente che torna indietro alla pagina del submit si ritrova un messaggio che, a seconda del browser utilizzato, potrebbe essere interpretato come errore. Se ricarica la pagina, e succede spesso, gli stessi dati potrebbero essere inseriti due volte.

    Ora si può utilizzare un token che evita "il doppione", oppure fare una chiamata POST direttamente con ajax.

    Io invece utilizzo questo metodo:


    1. mi trovo ad esempio nella pagina contatti.php e la form ha come action=process.php
    2. al submit del form processo la richiesta sul server
    3. in process.php effettuo le operazioni che devo fare (invio, salvataggio dati)
    4. quindi ti rendirizzo alla pagina da dove provieni, in questo caso contatti.php


    Così facendo la pagina che realizza il salvataggio vero e proprio (process.php) viene sovrascritta, e se torni indietro ti ritrovi nuovamente in contatti.php

    Ho sempre utilizzato questo metodo e non ho mai avuto problemi.

    Più complicato da spiegare che da mettere in pratica

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,468
    si è un buon modo quando ci sono operazioni sul DB, capito, hai il "motore" che viene eseguito a parte, ma lui diceva che fa le eliminazioni con javascript...attendiamo suo intervento

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.