Ich versuche verschachtelte Objekte (nicht Modelle in den MVC senss) mit Annotationen und etwas benutzerdefiniertem Code zu validieren.
Ich fand den folgenden Beitrag nützlich
Manuelles Verwenden von Datenannotationen und Objektdiagrammen
Wie in einer Antwort vorgeschlagen, habe ich eine zusätzliche Routine in der Containerklasse erstellt, um das verschachtelte Objekt zu validieren. Hier ist mein modifizierter Testcode
%Vor%Ich habe jedoch Probleme, all die Validierungsfehler zu erhalten, auch wenn ich TryValidateObject mit validiereAllProperties aufruft, das auf true gesetzt ist.
%Vor%Wenn im Container Fehler auftreten, werden nur diese angezeigt. Nur wenn das Containerobjekt keine Fehler enthält, werden Fehler im verschachtelten Objekt angezeigt. Ich vermute, es hat etwas damit zu tun, dass die Validate-Routine eine vollständige Liste zurückgibt und nicht in der Lage ist, aus dem Container (?)
zu einer (bestehenden) Liste hinzuzufügenGibt es irgendwelche Änderungen, die ich an der Routine vornehmen kann, damit alle Fehler angezeigt werden?
Siehe diese Antwort: Ссылка
Es gibt also einen Fehler in den Attributen Ihrer Klasse, und daher wird die Validate-Methode nicht aufgerufen. Ich schlage vor, CustomValidationAttribute wie folgt zu verwenden:
%Vor%Tags und Links asp.net-mvc c# validation