Ich möchte Validator.TryValidateValue()
verwenden, aber verstehe nicht die Mechanik. Sagen Sie, ich habe folgendes:Verstehen ValidationContext in DataAnnotations
public class User {
[Required(AllowEmptyStrings = false)]
[StringLength(6)]
public string Name { get; set; }
}
und die Methode:
public void CreateUser(string name) {...}
Meine Validierungscode ist:
ValidationAttribute[] attrs = bit of reflection here to populate from User class
var ctx = new ValidationContext(name, null, null);
var errors = new List<ValidationResult>();
bool valid = Validator.TryValidateValue(name, ctx, errors, attrs);
Es funktioniert gut, bis der Wert von name
null
ist. Ich bekomme ArgumentNullException
bei der Instanziierung ValidationContext
und verstehe nicht warum. TryValidateValue()
erfordert auch Nicht-Null-Kontext. Ich habe einen Wert und eine Liste von Attributen, gegen die ich validieren kann. Was ist das für ValidationContext
?
Ich habe mich damit nicht getäuscht, bevor es für mich aussieht, dass Sie den Objekttyp in den ValidationContext übergeben sollten, nicht die Eigenschaft ... also eine Instanz von User übergeben, die nicht null ist. –
Wenn Sie das Attribut von DataAnnotation anpassen möchten, können Sie zu [mein Beitrag] gehen (http://weblogs.asp.net/thangchung/archive/2010/06/25/extearning-resource-provider-for-soring- resources-in-the-database.aspx) Außerdem passen Sie den Validator an. – thangchung