Soft Validation mit abgeleiteten Klassen und dataAnnotations

  • Ich habe heute eine ziemlich coole Idee, aber ich bin mir nicht sicher, wie ich das machen soll.

    Ich baue ein Formular für Seite in asp.net MVC3 C #, das in einem temporären Bereich am Ende jeder Seite gespeichert wird.

    Jetzt werden diese Daten in eine Klasse mit einigen aufzählbaren Klassen aufgenommen, daher relativ kompliziert.

    Nun möchte ich, dass der Benutzer in der Lage ist, alles, was er will, ohne Validierung einzulegen (mit Ausnahme der Sicherheit offensichtlich), damit er das einfügen kann, was er will. Ich möchte jedoch, dass dies softvalidiert wird.

    Ich möchte Metadaten für die Validierung verwenden. Da dies jedoch eine harte Validierung bietet, kann ich dies nicht auf die Klasse anwenden, die das Formular verwendet als Modell (stark typisiert). Ich denke, der beste Weg, dies zu tun, ist, eine Klasse aus der Klasse auf dem Formular abzuleiten und Datenanmerkungen darüber zu werfen (Ich hoffe, dass es möglich ist, eine Schnittstelle irgendwie anzuwenden, aber ich gehe davon aus es ist nicht)

    DANN, wenn der Benutzer das Formular an unsere Datenbank senden möchte, möchte ich, dass das Formular durchgearbeitet und bestätigt wird. Ich finde es schlecht, wenn ich die Klasse ohne die Datenanmerkungen, die die Daten enthalten, mit den dataAnnotations in leere konvertiert, und alle Fehler, die (im Wesentlichen wenn die Daten nicht gültig sind) auftreten, auf dem Bildschirm anzeigen und anzeigen können Sie können das Problem beheben.

    Eine weitere Sache, die ich tun möchte, wäre, dass ich irgendwie die kommentierte Klasse verwenden könnte, um das Formular zu überprüfen, wenn der Benutzer eingeschaltet ist es. Ich kann also sagen "Wir empfehlen, dass Sie dieses Feld einfügen". Statt "dieses Feld darf nicht leer sein".

    Zusammenfassend gilt:

    1. Ist es möglich, Schnittstellen ein- und auszuschalten, wenn ja, wie?
    2. Wie würde ich classA in classB umwandeln, wobei classB von classA abgeleitet ist und dataAnnotations
    3. (Fortsetzung von 2) Wie würde ich während der Konvertierung Datenfehler abfangen und auflisten?
    4. Wie kann ich Klasse B auf einem Formular wo validieren lassen
    23 November 2011
    MrJD
1 answer
  • Ich glaube nicht, dass Sie dies mit dem Validierungsframework in MVC tun können. Die Validierung ist eine binäre Operation. Die Eingabe ist entweder gültig oder nicht. Die ValidationResult -Klasse, die verwendet wird, um den Erfolg oder Misserfolg während des Validierungsprozesses anzuzeigen, hat kein "Vielleicht" -Mitglied (um einen Begriff zu verwenden), entweder Ja oder Nein.

    Da Sie jedoch den gesamten Validierungsprozess steuern können, können Sie immer Ihre eigenen Attribute für Datenanmerkungen definieren und in Ihrem Controller (Ihren Controllern) testen, was ich als "Warnungen" bezeichnen würde, und entsprechend reagieren, möglicherweise mit einem Benachrichtigungsbereich mit Zeichenfolgen wie "Wir empfehlen, Daten in dieses Feld einzugeben" oder etwas Ähnliches.

    Dies setzt voraus, dass Sie keine unauffällige clientseitige Validierung verwenden Ich bin mir nicht sicher, wie man das umgehen kann, ich spreche davon, die Variable ModelState in Ihren Controllern so zu verwenden, dass Sie über den Test IsValid hinausgehen können.

    22 November 2011
    kprobst