0

我有一个TextBox,其值在被分析为int后传递给对象中的int属性。.NET WinForms和企业库验证应用程序块

当我使用ValidationProvider时,验证时将忽略此转换步骤,并且出现错误,告诉我无法将字符串保存到int32。

我可以通过在我的对象中创建一个字符串属性来解决此问题,该属性充当表单中的文本框值和业务对象中的int值之间的桥梁,但我不喜欢这种方法,因为它需要将我的域对象更改为请验证层。

如何在转换后将其值存储为int的文本框在不创建域对象中的桥属性的情况下进行验证?

回答

1

我找到了解决方案。

字符串到整数转换是自动进行的,但如果文本框留空,它会失败。

我使用了ValidationProvider的ValueConvert处理程序来解决这个问题,但我确信这是某种错误。

编辑:ValueConvert事件不会触发,除非在属性中有一个Validator。当需要输入转换时,使用[ObjectValidator]作为虚拟元素来触发ValueConvert事件。

0

另一个“更好”的解决方案是将TypeConversionValidator添加到我的属性中。

实施例特性:[TypeConversionValidator(typeof运算(INT))]

编辑:忽略此。它不符合我的预期。