Frage

Ich habe eine Anwendung in ASP.net geschrieben wird, dass der der Benutzer hinzufügen Datensätze in einer Datenbank zu lassen. Die Seite wird eingerichtet, dass, wenn ein Benutzer einen Datensatz hinzufügt, wird die ID-Nummer der neu hinzugefügte Datensatz in der Sitzung festgelegt, die Seite Response.Redirects zu einem „Vielen Dank für die Einreichung“ Seite, dann leitet wieder auf die ursprüngliche Seite zu ermöglichen, weitere Bearbeitungen. Benutzer können auch die Zurück-Taste auf diesem Bildschirm verwenden, um den ursprünglichen Datensatz hinzugefügt Seite zurückzukehren, die sie Änderungen an den Daten vornehmen können.

Allerdings habe ich festgestellt, dass die ID in der Sitzung zu speichern ist nicht eine schrecklich gute Lösung, da ein Benutzer zwei Dokumente in verschiedenen Tabs oder Fenstern erstellen könnte versuchen. Ich habe auch versucht, die ID in einer wörtlichen Steuerungseinstellung, aber dies führt zu dem Problem, dass, wenn der Benutzer der Zurück-Taste verwendet, die wörtliche Steuerung nicht auf die ID festgelegt ist, und neue Datensätze erhalten statt einer editierten hinzugefügt.

Gibt es irgendeine Art von Lösung für das?

War es hilfreich?

Lösung

Dumme Frage, warum kann der Benutzer die Zurück-Taste verwenden, um die Daten zu bearbeiten gerade in einem Beitrag akzeptiert?

Wenn das Bearbeiten zuvor eingestellten Daten ein gängiges Szenario ist, warum gerade nicht auf eine Seite umgeleitet, wenn die Daten angenommen wird, dass sie es bearbeiten können. Dann, wenn die die Zurück-Taste getroffen würden sie auf den ursprünglichen „sauberen“ Einsatz gehen zurück / neue Datenseite.

Dies würde die folgenden Ströme Hinzufügen -> [Post] -> Bearbeiten -> ..... Hinzufügen -> [Post] -> Bearbeiten -> [Zurück-Taste] -> Add -> [Post] -> Bearbeiten -> [Beitrag] -> Bearbeiten ....

Andere Tipps

Ich würde empfehlen, Ihre ID in der Abfrage-Zeichenfolge zu speichern. Nachdem der Datensatz hinzugefügt wird, umleiten zu Ihrem „thankyou“ Seite, die dann ich vermute ich einen Link zu dem Bearbeitungsformular enthält, die Sie mit der ID in der Abfragezeichenfolgeflag generieren. Wenn dieser Link folgt, shouild die Bearbeitungsseite die ID aus dem Query-String ziehen, um den korrekten Datensatz zu laden, bis zu bearbeiten.

Ihre Add- und Bearbeitungsformular können auch die gleiche Seite sein, wenn eine ID in der Abfragezeichenfolgeflag vorgesehen ist, das Formular weiß, dass Datensatz zu bearbeiten, da sonst das Formular einen neuen Datensatz erstellt.

Haben Sie versucht, die ID in der Abfragezeichenfolgeflag Zugabe? Dann sind Sie sie lesen können, und an die Sitzung nach Bedarf hinzufügen (sagt auf einem Benutzer die Zurück-Schaltfläche klicken).

Es scheint wie eine Menge von Problemen ermöglichen die Bearbeitung eines Objekts in einer Seite gemacht wird, wenn die Rücktaste. Wäre es zu viel sein, sie bearbeitet Taste anstatt zu geben?

Die Kontrollen speichern ihren Zustand in der Viewstate. Wenn Sie sich entscheiden Session statt Viewstate verwenden, um die Informationen zu speichern, werden die Kontrollen ihren Zustand in den Sitzungszustand zu speichern und es wird nicht richtig mit mehreren Tabs arbeiten.

Ich habe noch nicht gefunden, einen Weg, dieses Problem zu umgehen, während immer noch Session verwenden. Unsere Lösung war die normalen Viewstate zu verwenden.

Ich habe versucht, die ID in den Abfragezeichenfolgeflag Speicher (die für die Bearbeitung meist in Ordnung ist), aber das Problem dabei ist, wenn die Information in der Sitzung für gespeichert wird, wenn sie auf die Schaltfläche Zurück verwenden. Wenn der Benutzer führt Folgendes aus:

  1. Benutzer erstellt einen Datensatz (erster Satz) wird die ID zusammen im Abfragezeichenfolgeflag vergangen, und vorübergehend in der Sitzung gespeichert.
  2. Der Benutzer erstellt einen weiteren Rekord (2. Satz) wird die ID zusammen im Abfragezeichenfolgeflag weitergegeben, vorübergehend in der Sitzung gespeichert.
  3. Benutzer verwenden die Zurück-Taste auf dem ersten Datensatz auf der Seite zu gehen, die nicht die Abfragezeichenfolgeflag haben.

Es ist wahrscheinlich ein weit hergeholt Szenario, aber es ist eine, die passieren kann. Die einzige Lösung, die ich habe, ist die Verwendung der Zurück-Taste zu blockieren, zum Hinzufügen von Seite zurückzukehren, indem Sie window.history.forward () in JavaScript. Aber dies als eine Lösung ist schrecklich.

Meine Frage an Sie ist, warum sind Speichern Sie etwas in der Sitzung zu beginnen? Wenn Sie vermeiden können, irgendetwas in der Sitzung zu speichern, ich glaube, Sie werden aus insgesamt besser sein.

Mit Gedanken darüber, wird die folgenden klingen wie eine anständige Lösung für das Problem, das ich oben beschrieben?

  • Wenn zuerst einen Datensatz hinzufügen, speichert einen Zeitstempel, wenn die Add-Seite wurde in einem versteckten Feld abgerufen.
  • Dieser Zeitstempel wird durch Sitzung übergeben, wenn der Benutzer klickt speichern. Zusammen mit der ID.
  • Wenn der Benutzer auf ein anderes Register zur gleichen Zeit öffnet und speichert dann die neue Seite Zeitstempel wird durch Sitzung übergeben.
  • Wenn der Benutzer der Add-Seite der ersten Aufzeichnung zuzugreifen versucht (mit der Zurück-Taste), sucht das System up-Sitzung, und sieht, ob es ein Zeitstempel ist, und ob sie die eine in dem verborgenen Bereich entspricht für diese Seite.
  • Wenn es nicht übereinstimmt, dann wird der Benutzer eine Aufforderung bekommt, und sagte dem Datensatz richtig zu bearbeiten.

Klingt vernünftig, oder auch zu komplex?

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