J'ai une structure qui implémente IValidatableObject, que j'utilise pour les propriétés d'un modèle de vue. La validation fonctionne correctement avec les propriétés non nullable, mais si vous ajoutez une propriété de type Nullable <MyStruct
> la méthode IValidatableObject.Validate n'est jamais appelée pour cette propriété, même si elle a une valeur.Types de valeur IValidatableObject et Nullable
Y a-t-il un moyen de déclencher la validation sur mes propriétés NULL, ou est-ce que IValidatableObject n'est pas destiné à être utilisé avec des types de valeur?
Merci
Informations complémentaires:
Je voulais être en mesure de préciser les unités lors de la saisie des données sous ma forme, par exemple 10m, 100km, 1cm etc. Je voulais aussi valider que les données saisies étaient à portée et d'un format correct. Ma structure convertit la chaîne avec des unités potentiellement différentes (100cm/100m/1km) en une propriété décimale qui a toujours la même unité (1/100/1000) et vice-versa.
J'ai utilisé IValidatableObject pour la validation car la validation sera toujours la même pour toute instance de MyStruct - Je ne voulais pas ajouter d'attribut chaque fois qu'il est utilisé.
Mon modèle ressemblerait à quelque chose comme ceci:
public class MyModel
{
public MyStruct Ab {get; set;}
public MyStruct? Cd {get; set;}
}
Mon point de vue est une vue fortement typé en utilisant le modèle, ce qui rend ma struct comme une zone de texte en utilisant un modèle d'affichage. Lorsque le formulaire est posté, j'ai un classeur de modèle personnalisé pour convertir la chaîne entrée à ma structure.
Mon action du contrôleur ressemble à:
public ActionResult MyAction(MyModel model)
{
//do stuff
}
Le modèle est lié ok pour les propriétés de type MyStruct et Nullable <MyStruct
>.
Pourriez-vous nous montrer le code que vous avez jusqu'ici pour votre modèle, contrôleur et vue? –
J'ai mis à jour la question avec plus d'informations – Dan