0

J'ai un TextBox dont la valeur est passée à une propriété int dans un objet après avoir été analysée par un int..NET WinForms et le bloc d'application de validation de la bibliothèque d'entreprise

Lorsque j'utilise un ValidationProvider, cette étape de conversion est ignorée lors de la validation et une erreur me signale que je ne peux pas enregistrer la chaîne dans un int32. Je peux résoudre ce problème en créant une propriété de chaîne dans mon objet qui sert de pont entre la valeur textbox du formulaire et la valeur int de mon objet métier, mais je n'aime pas cette approche, car elle nécessite de modifier les objets de mon domaine s'il vous plaît la couche de validation.

Comment puis-je valider une zone de texte stockant sa valeur dans un int après une conversion sans créer de propriété de pont dans l'objet de domaine?

Répondre

1

J'ai trouvé une solution.

La conversion string en int est effectuée automatiquement mais échoue si la zone de texte est vide.

J'ai utilisé le gestionnaire ValueConvert du ValidationProvider pour résoudre ce problème mais je suis convaincu qu'il s'agit d'un bug quelconque.

EDIT: L'événement ValueConvert ne se déclenchera pas s'il n'y a pas de validateur dans la propriété. Utilisez [ObjectValidator] en tant que dummy pour déclencher l'événement ValueConvert lorsque des conversions d'entrée sont attendues.

0

Une autre "meilleure" solution consiste à ajouter un TypeConversionValidator à ma propriété.

Exemple Attribut: [TypeConversionValidator (typeof (int))]

EDIT: ignorer ce. Cela ne fonctionne pas comme je le souhaitais.