Domanda

Ho due pagine aspx (A, B) creati utilizzando ASP.NET MVC. Nel file A ho un paio di caselle di controllo e caselle di testo.

Quando mi muovo alla pagina B e cerco di passare a pagina A premendo il browser pulsante Indietro (in Mac Safari), la pagina non è sempre aggiornata. La pagina di conserva i suoi antichi valori (per caselle di controllo e caselle di testo).

Quando ho avuto il punto di rottura nel lato server. Sono in grado di ottenere il colpo.

Sono sicuro che il metodo di azione lato server viene chiamato. C'è qualche problema con il browser SAFARI MAC.

ho provato lo stesso caso d'uso negli altri browser IE e FF, sembra funzionare corretly.

abbastanza semplice, ma ho forza ottenere la risposta giusta, mentre googling.

Qualcuno potrebbe suggerire un lavoro in giro per questo in Mac.?

Grazie,

Vijay

È stato utile?

Soluzione

Non ho controllato, ma sono abbastanza sicuro che Safari per Mac non è l'unico browser per fare questo. Questo è a causa del modo in cui la cache del browser funziona. Quando si va indietro nella cronologia del browser, Safari (e per quanto ne so Firefox pure) non richiede nuovamente la pagina. Invece, Safari / Webkit mantiene una copia in memoria della pagina visitata precedente, in modo che tornare indietro è quasi istantanea.

In questa situazione, Safari è mantenere una copia esatta di esso, compresi i valori degli ingressi. In una situazione normale, questo potrebbe essere utile per l'utente, e come ho detto non credo che Safari è l'unico che fa questo (e anche se lo fosse, altri browser potrebbe scegliere di fare lo stesso in futuro, in modo da non si devono avere come obiettivo in modo specifico).

La disattivazione della cache per l'azione 'A' dovrebbe fare il trucco, come dovrebbe forzare il browser per ottenere nuovamente la pagina (e reimpostare il valore degli ingressi). Qualcosa di simile a questo:

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

Se questo non risolve il problema, potrebbe essere necessario cancellare i valori con javascript in caso onload della pagina web (questo dovrebbe essere abbastanza banale a che fare con jQuery). Qualcosa di simile:

$(document).ready(function() {

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

})

Nota: il codice non è testato, ma spero che aiuta (se disabilitare la cache per la pagina non riesce):)

Altri suggerimenti

Prova a impostare autocomplete = "off" sul modulo

Questo accade anche se si aggiorna la pagina su Firefox.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top