我有一个继承ActiveRecordValidationBase
的类,它包含以下属性:
[Property]
[ValidateDecimal]
public Decimal UnitCost { get; set; }
我还有一个UnitCostTextBox接受所述UnitCost的输入。
我想要做的是使用Castle的验证器执行验证一次。但是,似乎在我将UnitCodeTextBox.Text
传递给我的对象之前,我需要先将其转换为小数。
如果输入错误,将抛出异常。所以这意味着我仍然必须执行正则表达式验证并将字符串转换为十进制类型,然后再将其交给Castle.ActiveRecord。
这是不是意味着拥有[ValidateDecimal]
是多余的,因为我已经清理了UnitCost?
我想知道你们是怎么做到的?我用google搜索了一些示例,但大多数只处理[ValidateNonEmpty]
或[ValidateEmail]
这些都是字符串,而不是不同的数据类型
答案 0 :(得分:1)
你缺少的是绑定部分(实际上你是手动完成的)。 Castle.Components.Binder和Castle.Components.Validator一起用于自动绑定和验证字符串输入(例如HTML表单)为强类型对象。
MonoRail使用[DataBind]
attribute和特定于AR的[ARDataBind]
在WebForms应用程序中,您必须自己实现绑定+验证(当然可以使用Castle.Components.Binder和Castle.Components.Validator)