MVC Model erfordert true

70

Besteht bei Datenanmerkungen die Möglichkeit, dass eine boolesche Eigenschaft auf "true" gesetzt wird?

%Vor%     
Marty Trenouth 18.01.2011, 23:17
quelle

15 Antworten

42

Sie könnten Ihren eigenen Validator erstellen:

%Vor%     
HackedByChinese 18.01.2011, 23:50
quelle
116

Ich würde einen Validator sowohl für die Server- als auch für die Client-Seite erstellen. Mit MVC und unaufdringlicher Formularvalidierung kann dies einfach durch folgende Schritte erreicht werden:

Erstellen Sie zuerst eine Klasse in Ihrem Projekt, um die serverseitige Validierung wie folgt durchzuführen:

%Vor%

Fügen Sie anschließend die entsprechende Eigenschaft in Ihrem Modell hinzu:

%Vor%

Und schließlich aktivieren Sie die clientseitige Validierung, indem Sie Ihrer Ansicht das folgende Skript hinzufügen:

%Vor%

Hinweis: Wir haben bereits eine Methode GetClientValidationRules erstellt, die unsere Annotation in die Ansicht unseres Modells verschiebt.

Wenn Sie Ressourcendateien verwenden, um die Fehlermeldung für die Internationalisierung anzugeben, entfernen Sie den Aufruf FormatErrorMessage (oder rufen Sie einfach die Basis auf) und optimieren Sie die GetClientValidationRules -Methode wie folgt:

%Vor%     
dazbradbury 27.01.2012 15:51
quelle
70

Ich weiß, dass es sich um einen älteren Post handelt, aber ich wollte einen einfachen Weg auf dem Server teilen, um dies zu tun. Sie erstellen eine private Eigenschaft, die auf "true" festgelegt ist, und vergleichen Ihre bool mit dieser Eigenschaft. Wenn Ihr Bool nicht aktiviert ist (standardmäßig falsch), wird das Formular nicht validiert.

%Vor%     
fields.cage 19.07.2013 15:13
quelle
7

Ich habe mehrere Lösungen ausprobiert, aber keine funktionierte vollständig für mich, um sowohl die Client- als auch die Serverseite zu validieren. Also, was ich in meiner MVC 5-Anwendung getan habe, um es zum Laufen zu bringen:

In Ihrem ViewModel (für die serverseitige Überprüfung):

%Vor%

Auf Ihrer Razor-Seite (für die clientseitige Validierung):

%Vor%     
Kapé 03.10.2017 16:03
quelle
5

Sie könnten entweder Ihr eigenes Attribut erstellen oder das CustomValidationAttribute .

So würden Sie das CustomValidationAttribute verwenden:

%Vor%

wobei BoolValidation definiert ist als:

%Vor%     
Matthew Manela 18.01.2011 23:51
quelle
5

Überprüfen Sie, ob die Zeichenfolgendarstellung gleich True ist:

%Vor%     
ta.speot.is 17.01.2014 01:14
quelle
5
Das Attribut

[Required] steht für den Wert any - es kann entweder wahr oder falsch sein. Sie müssten dafür eine andere Validierung verwenden.

    
Sergey Kudriavtsev 10.10.2011 19:35
quelle
4

Ich möchte nur Leute auf die folgende Geige verweisen: Ссылка

Der Benutzer hat hinzugefügt [Range(typeof(bool), "true", "true", ErrorMessage = "You gotta tick the box!")] auf ihre boolesche Eigenschaft, wodurch die serverseitige Validierung funktioniert.

Damit auch die clientseitige Validierung funktioniert, haben sie das folgende Skript hinzugefügt:

%Vor%     
Harvey 27.05.2016 09:52
quelle
2

Haben Sie die entsprechenden Elemente in der web.config eingerichtet? ?

Das könnte dazu führen, dass die Validierung nicht funktioniert.

Sie können auch versuchen, ein benutzerdefiniertes Validierungsattribut zu erstellen (da [Required] nur interessiert, ob es existiert oder nicht, und Sie sich um den Wert kümmern):

%Vor%

Dann, Verwendung:

%Vor%

Von hier .

    
George Stocker 10.10.2011 19:35
quelle
1

Ich kenne keinen Weg durch DataAnnotations, aber das ist leicht in Ihrem Controller möglich.

%Vor%

Die einzige andere Option wäre, einen benutzerdefinierten Validator für die Serverseite und eine zu erstellen Remote-Validierer für die Client-Seite (Remote-Validierung ist nur in MVC3 + verfügbar)

    
Chase Florell 18.01.2011 23:46
quelle
0

Ich denke, der beste Weg, dies zu handhaben, ist, den Controller einzuchecken, wenn das Kästchen wahr ist, andernfalls fügen Sie einfach einen Fehler zu Ihrem Modell hinzu und lassen Sie Ihre Ansicht erneut anzeigen.

Wie bereits erwähnt, stellt [Required] sicher, dass es einen Wert gibt und in Ihrem Fall, wenn Sie nicht markiert sind, erhalten Sie immer noch den Wert false.

    
samack 10.10.2011 19:39
quelle
0

///     /// Zusammenfassung: -CheckBox for oder input type check erforderliche Validierung funktioniert nicht die Ursache und Lösung wie folgt     ///     /// Problem :     /// Der Schlüssel zu diesem Problem liegt in der Interpretation der 'erforderlichen' Regel der jQuery-Validierung. Ich habe ein wenig gegraben und einen bestimmten Code in einer jquery.validate.unobtrusive.js Datei gefunden:     /// adapter.add ("erforderlich", Funktion (Optionen) {     /// if (options.element.tagName.toUpperCase ()! == "INPUT" || options.element.type.toUpperCase ()! == "CHECKBOX") {     /// setValidationValues ​​(Optionen, "erforderlich", wahr);     ///}     ///});     ///
    /// Beheben: (Jquery-Skript-Fix auf Seitenebene hinzugefügt, um Kontrollkästchen erforderlichen Bereich)     /// jQuery.validator.unobtrusive.adapters.add ("brequired", Funktion (Optionen) {     /// if (options.element.tagName.toUpperCase () == "INPUT" & amp; & amp; options.element.type.toUpperCase () == "CHECKBOX") {     /// options.rules ["erforderlich"] = wahr;     /// if (Optionen.Message) {     /// options.messages ["required"] = options.message;     ///}     /// Fix: (C # -Code für MVC-Validierung)     /// Sie können sehen, dass es von Common RequiredAttribute erbt. Außerdem implementiert es IClientValidateable. Dies stellt sicher, dass die Regel auch auf die Client-Seite (jQuery-Validierung) übertragen wird.     ///
    /// Anmerkungsbeispiel:     /// [BooleanRequired]     /// öffentliche bool iAgree {bekommen; einstellen' }     ///

%Vor%     
dhandapani harikrishnan 31.12.2014 08:58
quelle
0

Hier finden Sie die foolproof-Validierung . Sie können es über Nuget herunterladen / installieren.

Es ist eine großartige kleine Bibliothek für diese Art von Dingen.

    
coalvilledave 13.04.2015 11:55
quelle
0

Das hat bei mir funktioniert. Sonst nichts. Mvc 5:

Modell

%Vor%

Anzeigen

%Vor%

    
toddmo 11.05.2017 21:16
quelle
-1

Im Anschluss an den Beitrag von ta.speot.is und dem Kommentar von Jerad Rose:

Der angegebene Beitrag funktioniert nicht mit unauffälliger Validierung. Dies sollte in beiden Lagern funktionieren:

%Vor%     
lobotommy 17.02.2016 09:01
quelle

Tags und Links