2009-07-02 3 views
1

Ich habe eine Seite "Ergebnisse" mit einem Formular und wenn "abschicken" angeklickt wird, wird das Formular an eine andere Aktion gebunden. So weit, so gut ...ASP.NET MVC - Wie kann ich FormCollection-Daten in einem Post an eine andere Aktion übergeben?

Aber das funktioniert gut, nur wenn Benutzer angemeldet ist. Wenn nicht, wird er auf die Seite "Login" umgeleitet und meine FormCollection verliert seine Daten.

Gibt es eine Möglichkeit, diese Daten ohne TempData zu speichern?

Danke !!

Antwort

3

Ich glaube nicht, dass das möglich ist. Das einzige, was sich das System bei der Umleitung auf die Login-Seite merkt, ist die 'Return URL'. Es werden keine Post-Daten gespeichert (dies können Megabytes an Daten sein ...)

Sie können das Session-Objekt als Alternative verwenden oder sicherstellen, dass der Benutzer angemeldet ist, bevor Sie einen Beitrag verfassen.

Oder, wenn es nur ein Suchergebnis, versuchen ohne POST zu leben, und verwenden Sie einen GET (die auch andere Vorteile hat)

+0

Danke Chris! Gibt es eine Möglichkeit, diese FormCollection in einem Cookie zu speichern? – AndreMiranda

+0

Nicht einfach. Nur wenn Ihre POST-Aktion keine Benutzeranmeldung erfordert, wird die FormCollection stattdessen in einem Cookie gespeichert und dann zu einer anderen Aktion umgeleitet, für die eine Anmeldung erforderlich ist. Aber ich würde es nicht so empfehlen ... – chris166

1

Ich würde es vorziehen, nicht autorisierte Benutzer nicht zulassen „Ergebnisse“ Seite besuchen oder bei Am wenigsten, um ihm die Nachricht "Bitte logge dich zuerst" anstelle des Formulars zu zeigen.