2012-03-26 13 views
4

Entschuldigung, wenn sich herausstellt, dass es sich um einen Betrogenen handelt. Ich kann nichts finden, was genau meinem Problem ähnelt.ASP.NET Postback und Zurück-Taste

Ich habe ein Asp: Label auf einem Formular. Auf Sendebutton Postback, ich serverseitige Validierung. Wenn dies fehlschlägt, setze ich die Beschriftung auf einen Textwert.

Wenn ich gültige Informationen anschließe und erneut auf "Senden" klicke, setze ich das Label als Teil des Senden-Klicks leer und es führt das Postback durch und zeigt die neue Seite an.

Wenn ich auf die Zurück-Schaltfläche klicke, zeigt es die richtigen Informationen in der Form UND die Fehlerbezeichnung.

Wenn Sie erneut auf Senden klicken, wird die Texteigenschaft des Labels als leer angezeigt, obwohl der Text auf dem Bildschirm deutlich zu sehen ist.

Ich erwarte, dass das Etikett leer ist (effektiv nicht sichtbar), da ich es auf leer gesetzt habe, bevor ich irgendwelche Aktionen ausgeführt habe.

Ich habe versucht mit beiden Text-Eigenschaft und Visible-Eigenschaft, aber mit dem gleichen Ergebnis.

Fertig? GO ...

+0

Ich bin einfach den Validierungscode/Design verwenden, der da war, um einen langen Code zu vermeiden. Jetzt, wo ich dieses Ziel weggeblasen habe. Ich könnte den Entwurf ändern, um customvalidators und ein clientseitiges Skript zu verwenden ... ????? – Roger

+0

Post einige Code ... – citronas

+0

Nach Ihrem Aspx-Code? – Pankaj

Antwort

0

Haben Sie versucht:

protected void Page_Load(object sender, EventArgs e) 
{ 
    lblMessage.Visible = false; 
} 

Jedesmal, wenn Ihre Seite wird Ihre Nachricht unsichtbar geladen wird. Wenn Sie also Ihre serverseitige Validierung durchführen, können Sie den Text Ihres Labels festlegen und Visibility = true festlegen.

+0

ja. hilft nicht. Die Ausgabe ist bereits zwischengespeichert, so dass keine Änderungen an den Steuerelementen in der Schaltfläche "Senden" an den Cache gesendet werden. Der Zurück-Button zeigt einfach den Zustand des letzten Caches an. – Roger

+0

Ich frage mich, ob Sie den Cache löschen können, wenn auf die Senden-Schaltfläche geklickt wird. Ich kann nicht sagen, ich bin mir sicher, dass das funktionieren wird oder nicht, nur ein Vorschlag. Deine Frage neu abgestimmt. – Seany84

0

"Wenn ich auf die Zurück-Schaltfläche klicke, werden die korrekten Informationen im Formular und die Fehlerbezeichnung angezeigt." : Kein Problem damit; Es zeigt Ihnen den Status der Seite zu der Zeit, als Sie es gepostet haben.

Wenn Sie nicht über Ihre Nachricht Etikett wollen ihren sichtbaren oder Text zu behalten, sollte Markup sein:

<asp:label id='myMsgLbl' runat='server' enableviewstate='false' visible='false/>' 

--edit

Soweit ich weiß, ist das Verhalten mit der Zurück-Taste ist wie erwartet.

Vielleicht sollten Sie nach Lösungen suchen, die der Zurück-Taste erlauben deaktivieren,

oder deaktivieren Caching Ihrer Form (aber ich denke, diese Lösung schlechter als Ihr erstes Problem sein)

private void Page_Load(object sender, System.EventArgs e) 
    { 
     Response.CacheControl = "no-cache"; 
     Response.AddHeader("Pragma", "no-cache"); 
     Response.Expires = -1; 
     Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); 
+0

das hat mein Problem nicht behoben. – Roger

+0

auch versuchen, dies zu setzen: Response.Cache.SetNoStore(); – Sergey

Verwandte Themen