2010-12-13 1 views
2

Ich habe eine 3-Schritte-Formulare, wo ich für jeden Schritt auf einem ViewModel binden, die DataAnnotation hat. Alles funktioniert gut, außer dass ich, wenn ich auf meine "vorherige" Schaltfläche klicke, die Validierung aufruft, und wenn die Werte fehlen, muss der Benutzer alle erforderlichen Felder ausfüllen. Wenn ich mit einem Aktionslink gehe, werden die Daten nicht beibehalten. Was ich hier suche, ist eine Möglichkeit, meine Werte zu speichern, ohne die Validierung aufzurufen. Ich denke auch über die Verwendung von Cookies nach, aber ich denke nicht, dass dies der beste Weg ist.Schritt für Schritt Problem mit der Validierung auf "Zurück" -Taste

Irgendwelche Ideen oder Vorschläge?

Antwort

1

Ok nach vielen Suchen fand ich eine Lösung für einen Assistenten wie mehrere Formulare mit vorherigen und nächsten Schaltflächen, die Client-Validierung von Data Annotation und MicrosoftMvcValidation.js nicht aufrufen. Ich fand diesen Beitrag: jQuery Validation plugin: disable validation for specified submit buttons Hexe einfach eine Klasse hinzufügen, aber es funktionierte nicht für mich, so dass ich wieder gucke und fand dieses: http://forums.asp.net/p/1622628/4165648.aspx Hexe hat eine Lösung für mich in Javascript: document.getElementById ("someButton") .disableValidation = wahr; Ich würde eine jQuery-Lösung bevorzugen, also könnte ich etwas mit dem Klassenattribut meiner Tasten machen, aber es funktioniert für heute und ich habe zu viel Zeit damit verbracht.

Ich hoffe, es hilft jemand anderen, der versucht, eine Schaltfläche "Abbrechen" oder einen Assistenten wie Formulare in MVC2 zu tun und möchte das Formular an den Controller, so dass er die Validierung löschen muss.

1

Ich verwende separate Modelle für jeden Schritt meiner Assistentenseiten. Ich stelle auch sicher, dass die vorherigen Klicks ModelState.IsValid nicht treffen, was die Validierungsprüfung auslöst.

Ich speichere die Ergebnisse jedes Schrittes mit Sitzungsstatus in SQL Server gespeichert. Sie können auch versteckte Variablen verwenden, aber diese Lösung hat mir nicht gefallen.

Fügen Sie einen Kommentar hinzu, wenn Sie mehr Details benötigen oder Code für uns zu sehen.

+0

Danke für die Antwort, das ist, wie ich auch meine Frage arbeiten würde mehr darüber sein, wie Sie die vorherige Taste nicht treffen, um ModelState.IsValid zu treffen? Ich benutze Client-Validierung, ich weiß, dass ich in meinem Controller nicht nur die Model.IsValid() aufrufen muss, aber ich weiß nicht, "Client-Validierung für meine vorherige Schaltfläche deaktivieren". Ich kann meinen Code veröffentlichen, wenn Sie es brauchen, aber ich denke nicht, dass es nötig ist. – VinnyG

+0

Meine vorherige Schaltfläche ruft nur eine Aktionsmethode auf, ohne das Formular zu senden. Sie können auch feststellen, auf welche Schaltfläche geklickt wurde, und anschließend ModelState.Clear aufrufen, um Fehler auszuschließen. – rboarman

+0

Ich versuche, die Felder zu speichern, wenn der Benutzer auf vorherige klickt, also kann ich es nicht mit einem ActionLink tun. Also, was ich will ist, um das Formular einzureichen, aber es funktioniert nicht, da meine Pflichtfelder Popup. – VinnyG