.NET WinForms和企业库验证应用程序块

时间:2009-02-09 20:31:16

标签: .net winforms enterprise-library validation-application-bl

我有一个TextBox,其值在被解析为int后传递给对象中的int属性。

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

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

如何验证在转换后将其值存储到int而不在域对象中创建桥属性的文本框?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。

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

我使用ValidationProvider的ValueConvert处理程序来修复此问题,但我确信这是某种错误。

编辑:除非属性中有Validator,否则不会触发ValueConvert事件。当预期输入转换时,使用[ObjectValidator]作为虚拟对象来触发ValueConvert事件。

答案 1 :(得分:0)

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

示例属性:[TypeConversionValidator(typeof(int))]

编辑:忽略这一点。它不像我预期的那样工作。