Datenüberprüfungsattribut für eine Bedingung zwischen zwei Eigenschaften asp.net mvc

8

Ich möchte eine Regel zwischen zwei Eigenschaften setzen, die eine Eigenschaft größer als die andere sein muss. Also, was ist das Datenvalidierungsattribut, das mich dazu bringen kann?

Hier sind meine Eigenschaften

%Vor%

Wie du leicht verstehen kannst, muss Max größer als Min sein.

Danke für Ihre Hilfe!

    
intern 05.09.2014, 09:05
quelle

4 Antworten

17

Datenvalidierungen auf Ihrem Objekt erscheinen mir als eine gute Sache (sowie die Verwendung der clientseitigen Validierung).

Dies ist ein Attribut, das Sie verwenden können, um das zu tun, was Sie fragen (das in der Lage sein wird, Paare von Typen zu vergleichen, die IComparable implementieren)

%Vor%

Sie können dann Ihr Modell dekorieren:

%Vor%

Dies ist eine nützliche Frage bezüglich weniger als Validierungen. MVC benutzerdefinierte Validierung: zwei Daten vergleichen gilt aber für Daten anstelle von ganzen Zahlen, aber derselbe Ansatz gilt

    
AlexC 05.09.2014 11:55
quelle
4

Sie könnten ein Attribut verwenden oder Ihr Ansichtsmodell könnte IValidatableObject implementieren. Was ist nett ist, dass der asp.net mvc Modelbinder automatisch dies auf Post laufen lässt.

%Vor%

Controller Aktion:

%Vor%

Anzeigen

%Vor%     
Fran 05.09.2014 13:16
quelle
1

Ich stimme Exception zu, JQuery ist viel einfacher zu bearbeiten als das Modell selbst, um diese Art von Funktionalität zu erreichen. Wie auch immer, ohne Erfahrung in Javascript / Jquery ist es wert, einen Blick in die Dokumentation zu JQuery hier zu werfen.

Sie finden hier auch tolle Tutorials hier

Und der wichtigste Teil ist die eigentliche JQuery-Bibliothek hier . Sie können die Datei herunterladen und in Ihre Lösung einbinden ODER einfach einen Link zu einer vom Server gehosteten CDN-Version der Datei in der Kopfzeile Ihrer Ansicht einfügen. (beide Optionen haben Anweisungen auf dem Link, den ich Ihnen gegeben habe)

Eine Aktualisierung auf Ausnahmen antwortet jedoch nicht mit der erforderlichen Funktionalität, um nur ganzzahlige Werte in den Eingabesteuerelementen zuzulassen. Um dies zu beheben, ändern Sie einfach das Attribut inputs wie folgt in "number".

%Vor%

Und ändern Sie das Skript, um das Parsen von String in Integer wie folgt zu entfernen:

%Vor%     
Master Yoda 05.09.2014 11:23
quelle
1

Die Funktionalität, die Sie benötigen, kann leicht mit Jquery wie gezeigt erreicht werden: -

HTML: -

%Vor%

Jquery:

%Vor%

DEMO

    
Kartikeya Khosla 05.09.2014 10:43
quelle

Tags und Links