Frage

Ich versuche, die beste Art und Weise zu validieren Daten innerhalb eines MVC C # app, um herauszufinden, und xVal schien die beste Lösung zu sein. Aber in ein Problem, das ich bin mit dem Datentyp Validierung ausgeführt wird.

Zuerst habe ich eine Update in die DTO tat, und dann auf dem DTO die Validierung ausgeführt wird. Dies funktionierte großartig für Dinge wie erforderlichen Felder aus, aber Update würde eine Ausnahme auslösen, wenn Sie versucht haben, zum Beispiel eine Zeichenfolge ( „asd“) in ein Dezimalfeld abzubilden. Da Update RAN sein mußte vorher war es Daten zu validieren war ich nicht sicher, wie das umgehen.

war meine Lösung einen DTO pro Formular zu erstellen, das Update auf, dass in, läuft Validierung kopieren würde, und dann Werte abschreiben in die richtigen DTOs. Alle Attribute auf dem Formular DTO wären Saiten so Update nie Bomben aus, und ich würde die Datenvalidierung durch xVal erzwingen. Doch während Regeln wie erforderlich in kicken, kann ich nicht die Datatype-Regel Kick zu bekommen in scheinen (in diesem Fall versuchen, DataType.Currency).

hatte ich auch versucht, immer die clientseitige Validierung an der Arbeit, aber ich habe gehofft, es war eine saubere Art und Weise serverseitige Validierung von Datentypen zu tun.

Was haben andere in Bezug getan Daten Validieren Typen auf der Server-Seite?

War es hilfreich?

Lösung

Was ich am Ende tun war einige DTOs schaffen, die die Formen darstellen. Diese DTOs würde ein Request.Form in und automatisch alle Formularwerte in die inneren Eigenschaften (ex public string E-Mail, public string Vorname) Karte basiert auf ihnen den gleichen Namen wie die Form Werte zu sein.

Sie würden alle String-Eigenschaften haben und ich würde legte die xVal auf ihnen zuschreibt. Ich würde dann xVal und reguläre Ausdrücke verwenden, um sicherzustellen, kommen die Daten in gültig war (ex eine gültige Datum, E-Mail, Anzahl, etc.). Auf diese Weise würde es nie eine Ausnahme ausgelöst, weil sie immer in einen String gehen wurden, als zu .Net Gegensatz versuchen, es in ein Datum oder etwas zu analysieren.

Dies würde sicherstellen, dass die Daten machten es immer xVal, wo ich die Validierung Ich will laufen konnte, und und wandeln es in den richtigen Typ wie Datetime, wenn ich weiß, dass ich gültige Daten haben.

Andere Tipps

Ich bin mit benutzerdefinierten Validierer von Validation abgeleitet für Validierung der Daten, die von String auf der Server-Seite zu anderen Datentypen analysiert werden sollen. Zum Beispiel:

public class DateAttribute : ValidationAttribute
    {

        public override bool IsValid(object value)
        {
            var date = (string)value;
            DateTime result;
            return DateTime.TryParse(date, out result);
        }
    }

Ich habe auch festgestellt, eine Möglichkeit, eine solche Validierung Attribute in die clientseitige und serverseitige Validierung zu drehen Attribute, ohne dass benutzerdefinierte JavaScript-Code zu schreiben. Ich muss nur Attribut Basisklasse aus einer anderen Validierung abzuleiten. Werfen Sie einen Blick auf meine Blog-Artikel über die clientseitige Validierung , wenn Sie mehr darüber erfahren mögen.

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