Frage

Ich habe zwei ASPX -Seiten (a, b) mit ASP.NET MVC erstellt. In der Datei A habe ich ein paar Kontrollkästchen und Textboxen.

Wenn ich zu Seite B wechsele und versuche, zu Seite A zu navigieren, indem ich die Browser -Back -Taste (in Mac Safari) drücke, wird die Seite nicht aktualisiert. Die Seite behält ihre alten Werte bei (für Kontrollkästchen und Textboxen).

Als ich den Break -Punkt auf der Serverseite hatte. Ich kann den Treffer bekommen.

Ich bin mir sicher, dass die Server -Seitungs -Aktionsmethode aufgerufen wird. Es gibt einige Probleme mit dem Mac Safari -Browser.

Ich habe den gleichen Anwendungsfall in den anderen Browsern ausprobiert, dh und ff, es scheint korret zu funktionieren.

Ziemlich einfach, aber ich bekomme nicht die richtige Antwort beim Googeln.

Könnte jemand eine Arbeit dafür in Mac vorschlagen?

Vielen Dank ,

Vijay

War es hilfreich?

Lösung

Ich habe nicht überprüft, aber ich bin mir ziemlich sicher, dass Safari für Mac ist nicht der einzige Browser, der dies tut. Dies liegt an der Art und Weise, wie der Cache des Browsers funktioniert. Wenn Sie in die Browser -Geschichte zurückkehren, fordert Safari (und Afaik Firefox) die Seite nicht erneut an. Stattdessen führt Safari/Webkit eine Kopie im Speicher der vorherigen besuchten Seite, so dass das Zurückgehen fast augenblicklich ist.

In dieser Situation führt Safari eine genaue Kopie davon, einschließlich der Werte der Eingänge. In einer normalen Situation könnte dies für den Benutzer praktisch sein, und wie ich bereits sagte, denke ich nicht Sie sollten es nicht speziell ansprechen).

Das Deaktivieren des Cache für die Aktion "A" sollte den Trick ausführen, da er den Browser dazu zwingen sollte, die Seite erneut zu erhalten (und den Wert der Eingänge zurückzusetzen). Etwas wie das:

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

Wenn dies das Problem nicht löst, müssen Sie die Werte möglicherweise mit JavaScript im Onload -Ereignis der Webseite löschen (dies sollte ziemlich trivial mit JQuery zu tun haben). Etwas wie:

$(document).ready(function() {

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

})

Hinweis: Der Code ist ungetestet, aber ich hoffe, er hilft (wenn der Cache für die Seite deaktiviert wird) :) :)

Andere Tipps

Versuchen Sie, autocomplete = "Aus" in Ihrem Formular festzulegen

Dies geschieht auch, wenn Sie die Seite auf Firefox aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top