Validation entier à l'égard des non-qualités requises en MVC

J'ai essayer de valider une propriété sur un modèle que j'ai. Cette propriété n'est PAS nécessaire, et donc si sa invalide MVC semble l'ignorer. J'ai même créé une coutume ValidationAttribute, mais rien ne fonctionne.

public class NumberWang : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        if (value == null)
            return true;

        int g;
        if (int.TryParse(value.ToString(), out g))
        {
            if (g >= 0)
                return true;
        }
        return false;
    }
}

public class MyModel 
{
    [Range(0, 999999, ErrorMessage = "category_id must be a valid number")]
    [NumberWang(ErrorMessage = "That's NumberWang!")]
    public int? category_id { get; set; }

    /* there are other properties of course, but I've omitted them for simplicity */

    public void Validate()
    {
        Validator.TryValidateProperty(this.category_id,
        new ValidationContext(this, null, null) { MemberName = "category_id" },
        this.validation_results);
    }
}

Si je passe la valeur " abc " comme un category_id de ce modèle, il valide l'amende juste. Ce que je fais mal?

OriginalL'auteur roryok | 2013-08-20