2017-09-05 4 views
0

Ich habe eine Klasse "SampleDTO.cs" und ich möchte Daten annanatoation Attribute während der Laufzeit zuweisen.Daten Annotation - Dynamische Zuordnung?

Ein Beispiel

SampleDTO.cs {

public string Name 
{ 
    get;set; 

} 

}

ich zwingen müssen, benötigt der Feldüberprüfung, Validierung Minimal- oder Maximal Feld basierend auf Zustand. Ich habe für ein Forum gesucht und konnte nicht jede Lösung erhalten ..

Meine expection ist,

if(some condition1) 
{ 
    check SampleDTO.Name property for Required field validator check. 
} 
else if(some condition2) 
{ 
    check SampleDTO.Name property for minimum and maximum length check. 
} 
else{ 
    someother check. 
} 

(Dies kann leicht getan werden, um das erforderliche Dekoration, Min-/Max Länge Attributs auf dem SampleDTO. cs Klasse. Ich erwarte, dass dies dynamisch anstelle der statischen Zuweisung implementieren.)

Vielen Dank im Voraus.

+0

Ist die Bedingung mit dem DTO selbst verknüpft oder liegt sie außerhalb des DTO? Anders ausgedrückt, können Sie eine Beispielkondition angeben? –

+0

Scheint, als ob es eine bessere Möglichkeit gibt, was Sie wollen, aber das ist möglich, je nachdem was genau Sie brauchen, indem Sie DataAnnotationsModelValidatorProvider anpassen. Siehe: https://stackoverflow.com/questions/4088274/possible-to-change-data-annotations-during-runtime-asp-net-mvcs-range-requ –

Antwort

-1

Konnten Sie nicht einen string.IsNullorWhitespace (SampleDTO.Name) für erforderliches tun? und dann überprüfen Sie die Länge für Ihre min und max in Ihren Bedingungen?

Wenn Sie dynamisch als nicht festlegen von Eigenschaften meinen, würden diese String-Methoden funktionieren.

+0

ja, es wird funktionieren, aber wir müssen unsere schreiben eigene benutzerdefinierte Methoden für jede Bedingung für String-Länge, Null usw. Dies ist nicht für eine Klasse und dieser Bereich wird größer sein. Also suche ich die Datenannotation, anstatt unseren eigenen Code zu schreiben. :) Vielen Dank für Ihre schnelle Antwort. – kamal

+0

Ich sehe. Ich glaube, ich habe die Frage zunächst missverstanden. Sie könnten tun, was steven.vakil oben vorgeschlagen hat, aber ich würde ein wenig Javascript dafür schreiben, viel Glück! –

+0

mit der Daten Annotation auf unserer benutzerdefinierten Klasse ist möglich, ich habe es erfolgreich gemacht. Beispiel, in meiner Klasse habe ich eine Eigenschaft erstellt und die folgende Definition geschrieben. RequiredAttribute oRequired = Neu RequiredAttribute { AllowEmptyStrings = false, ErrorMessage = Nachricht }; if (oRequired.IsValid (this.UtteranceVal)) { Rückgabe false; } – kamal

Verwandte Themen