我有一个 TextBox,其值在解析为 int 后传递给对象中的 int 属性。
当我使用 ValidationProvider 时,在验证时会忽略此转换步骤,并且我收到一条错误消息,告诉我无法将字符串保存到 int32。
我可以通过在我的对象中创建一个字符串属性来解决这个问题,该属性充当表单中的文本框值和我的业务对象中的 int 值之间的桥梁,但我不喜欢这种方法,因为它需要更改我的域对象以取悦验证层.
如何验证转换后将其值存储到 int 的文本框,而不在域对象中创建桥属性?
我有一个 TextBox,其值在解析为 int 后传递给对象中的 int 属性。
当我使用 ValidationProvider 时,在验证时会忽略此转换步骤,并且我收到一条错误消息,告诉我无法将字符串保存到 int32。
我可以通过在我的对象中创建一个字符串属性来解决这个问题,该属性充当表单中的文本框值和我的业务对象中的 int 值之间的桥梁,但我不喜欢这种方法,因为它需要更改我的域对象以取悦验证层.
如何验证转换后将其值存储到 int 的文本框,而不在域对象中创建桥属性?
我找到了解决方案。
字符串到 int 的转换是自动进行的,但如果文本框留空,它将失败。
我使用了 ValidationProvider 的 ValueConvert 处理程序来解决这个问题,但我确信这是某种错误。
编辑:除非属性中有验证器,否则不会触发 ValueConvert 事件。当需要输入转换时,使用 [ObjectValidator] 作为虚拟对象来触发 ValueConvert 事件。
另一个“更好”的解决方案是将 TypeConversionValidator 添加到我的属性中。
示例属性:[TypeConversionValidator(typeof(int))]
编辑:忽略这一点。它不像我预期的那样工作。