Как использовать атрибут ValidateDecimal в Castle.ActiveRecord? - PullRequest
0 голосов
/ 01 августа 2009

У меня есть класс, который наследует ActiveRecordValidationBase, который содержит следующее свойство:

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

У меня также есть UnitCostTextBox, который принимает ввод для указанного UnitCost.

То, что я хотел бы сделать, это выполнить проверку один раз с использованием средств проверки Касла. Однако, похоже, что прежде чем я смогу передать UnitCodeTextBox.Text своему объекту, мне нужно сначала преобразовать его в десятичную.

Если у меня есть ошибочный ввод, будет сгенерировано исключение. Таким образом, это означает, что я все еще должен выполнить проверку регулярного выражения и преобразовать строку в десятичный тип, прежде чем передать ее в Castle.ActiveRecord.

Не означает ли это, что иметь [ValidateDecimal] избыточно, так как я уже продезинфицировал UnitCost?

Мне интересно, как вы, ребята, делаете это? Я гуглил примеры, но большинство из них обрабатывают только [ValidateNonEmpty] или [ValidateEmail], которые все равно являются строками, а не разными типами данных

1 Ответ

1 голос
/ 02 января 2010

То, что вам не хватает, это обязательная часть (на самом деле вы делаете это вручную). Castle.Components.Binder и Castle.Components.Validator используются вместе для автоматического связывания и проверки правильности ввода строки (например, HTML-формы) в строго типизированные объекты.

MonoRail делает это с атрибутом [DataBind] и специфичным для AR [ARDataBind]

В приложении WebForms вам придется самостоятельно реализовать привязку + проверку (вы, конечно, можете использовать Castle.Components.Binder и Castle.Components.Validator)

...