Question

J'ai une classe qui hérite de ActiveRecordValidationBase qui contient la propriété suivante:

[Property]
[ValidateDecimal]
public Decimal UnitCost { get; set; }

J'ai aussi un UnitCostTextBox qui accepte une entrée pour ledit UnitCost.

Ce que je voudrais faire, c'est valider une fois en utilisant les validateurs de Castle. Cependant, il semble qu'avant de pouvoir transmettre UnitCodeTextBox.Text à mon objet, je devrais d'abord le convertir en décimal.

Si j'ai une entrée erronée, une exception sera levée. Cela signifie donc que je dois encore effectuer des validations sur les expressions rationnelles et convertir la chaîne en un type décimal avant de la passer à Castle.ActiveRecord.

Cela ne signifie-t-il pas qu'il est redondant d'avoir un [ValidateDecimal] puisque j'ai déjà nettoyé UnitCost?

Je me demande comment vous faites les gars? J'ai googlé pour des exemples, mais la plupart ne traitent que [ValidateNonEmpty] ou [ValidateEmail] qui sont toutes des chaînes de toute façon, pas des types de données différents

Était-ce utile?

La solution

Ce qui vous manque, c'est la pièce de liaison (en fait, vous le faites manuellement). Castle.Components.Binder et Castle.Components.Validator sont utilisés ensemble pour lier et valider automatiquement une entrée de chaîne (un formulaire HTML, par exemple) dans des objets fortement typés.

MonoRail le fait avec le attribut [DataBind] et [ARDataBind]

Dans une application WebForms, vous devrez implémenter vous-même la liaison + validation (vous pouvez bien sûr utiliser Castle.Components.Binder et Castle.Components.Validator)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top