Frage

Unsere Website hat mehr „Assistenten“, wo verschiedene Daten über mehrere Seiten gesammelt, und kann nicht in die Datenbank bis zum letzten Schritt begangen werden.

Was ist der beste / richtige Weg, einen Assistenten wie diese mit ASP.Net MVC

machen

edit:? Mein Chef jetzt sagt „no javascript“ - keine Gedanken darüber, wie um diese Einschränkung zu erhalten

War es hilfreich?

Lösung

Ich glaube nicht, gibt es einen besten / richtigen Weg, aber die Art, wie ich tun würde, ist es ...

Jeder Assistent erhält eine eigene Seite. Jeder Schritt erhält eine eigene div. Alle Schritte sind in der gleichen Form.

Die vorherigen / nächsten Tasten würden im Wesentlichen verstecken / zeigen die div in jedem Schritt des Prozesses. Die Submit-Button letzter Schritt trägt die gesamte Form. Es wäre ziemlich trivial sein, dies mit jQuery zu implementieren, und es wäre leicht zu pflegen, da alle Assistenten Schritte in einem einzigen View sind.

Auf der Steuerungsseite, dann würden Sie zwei Controller-Methoden haben, die HttpVerbs.Get Version, die das Formular für die Anzeige und die HttpVerbs.Post Version vorbereiten würde, die einen Formsresult nehmen und analysieren sie die Informationen zu erhalten, die erforderlich sind einzureichen des Benutzers Antworten auf Speicher / andere Prozesse.


Wow, Ihr Chef stinkt.

Diese Antwort fast funktioniert ordnungsgemäß für diejenigen ******, die Javascript deaktiviert haben (ja, beide von ihnen). Sie können es zwicken die nächsten vorherigen Tasten über CSS und sichtbar machen sie in Ihrem JavaScript-Code zu verstecken. Auf diese Weise Menschen mit Javascript um die Assistenten und die Leute sehen, ohne Javascript, um die gesamte Form zu sehen (ohne nächste / zurück-Tasten).

Die andere Option ist eine Ansicht für jeden Schritt des Assistenten zu erstellen. Sie können in der Session die Zwischenergebnisse der Form speichern. Auf diese Weise würde viel Zeit und Mühe kosten, zu implementieren, was bedeutet, dass Sie wahrscheinlich einige Überstunden aus Ihrem Chef quetschen konnte, wenn Sie zeigen, in etwa zwanzig Minuten Mühe, die Sie während des Mittagessens verbringen, wie einfach die Javascript-Route zu implementieren ist.

Andere Tipps

Wenn Sie nicht JavaScript verwenden können, dann wird jeden Schritt macht eine Ansicht, mit einem Verfahren, in dem Controller, und Ihre Daten bleiben in der Sitzung, bis sie bereit auf die Datenbank zu übermitteln.

Sie können Ihre Next und Zurück-Tasten mit der Actionhtmlhelper Methode machen.

Ein andere Möglichkeit ist das unvollständige Objekt zu speichern, die Sie mit dem Assistenten zur Datenbank aufbauen und nur den Primärschlüssel mit dem nächsten Schritt des Assistenten übergeben. Ich weiß, dass dies bedeutet, dass Sie auf NULL festlegbare einige der Datenbankfelder machen müssen, aber es hat den zusätzlichen Vorteil, dass Sie den Primärschlüssel in einem Cookie speichern und ermöglichen es dem Benutzer zu einem späteren Zeitpunkt zum Assistenten zurück zu kommen. Diese Option erfordert keine JavaScript oder Sitzungszustand.

Machen Sie

die verschiedenen Panels alle Client-Seite sein ... alle in der gleichen Form ... und wenn die endgültige Submit-Button gedrückt ist, können Sie alle Werte in der gleichen Zeit veröffentlichen.

Wenn Sie nicht Javascript verwenden können und nicht wollen, Server-Ressourcen mit Session-Variablen verbringen, können Sie auch serialisiert werden und die Werte deserialisieren in den verschiedenen Schritten eingegeben werden, und gibt sie hin und her ein verstecktes Eingabefeld. Ein bisschen wie Viewstate in ASP.NET Webforms.

Ich habe einen Login-Assistenten und dokumentierte die Ideen dahinter auf meinem Blog, wenn das hilft: link text

Sie können die einfache Komponente MVCWizard.Wizard auf NuGet verfügbar verwenden. Der Wizard ermöglicht es Ihnen, mit Hilfe eines Assistenten Teilansicht zu erstellen. Es besteht auch die AutoWizardController, die den gesamten Assistenten in einer einzigen Ansicht macht. All diese Komponenten arbeiten mit der Sitzung des Modellzustand zu speichern.

Es ist ein sehr einfaches, flexibles und erweiterbares Verfahren in dieser Frage: Wie mein zustandsbehaftete interlaced modale Dialoge in ASP.NET MVC

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