.NET WinForms 和企业库验证应用程序块
我有一个 TextBox,其值在解析为 int 后被传递到对象中的 int 属性。
当我使用 ValidationProvider 时,验证时会忽略此转换步骤,并且收到一条错误消息,告诉我无法将字符串保存为 int32。
我可以通过在对象中创建一个字符串属性来解决此问题,该属性充当表单中的文本框值和业务对象中的 int 值之间的桥梁,但我不喜欢这种方法,因为它需要更改我的域对象来满足验证层的要求。
如何验证转换后将其值存储为 int 的文本框,而不在域对象中创建桥接属性?
I have a TextBox whose value is passed to an int property in an object after being parsed to an int.
When I use a ValidationProvider this conversion step is ignored when validating and I get an error telling me that I cannot save the string to an int32.
I can fix this by creating a string property in my object that acts as a bridge between the textbox value in the form and the int value in my business object but I dislike this approach because it would require changing my domain objects to please the validation layer.
How can I validate a textbox that stores its value to an int after a conversion without creating a bridge property in the domain object?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我找到了解决方案。
字符串到 int 的转换是自动进行的,但如果文本框留空,则会失败。
我使用 ValidationProvider 的 ValueConvert 处理程序来修复此问题,但我确信这是某种错误。
编辑:除非属性中有验证器,否则 ValueConvert 事件不会触发。 使用 [ObjectValidator] 作为虚拟对象,在需要输入转换时触发 ValueConvert 事件。
I found an solution.
The string to int conversion is made automatically but it fails if the textbox is left blank.
I used the ValueConvert handler of the ValidationProvider to fix this but I am convinced that this is a bug of some sort.
EDIT: The ValueConvert event won't fire unless there is a Validator in the property. Use [ObjectValidator] as a dummy to fire the ValueConvert event when input conversions are expected.
另一个“更好”的解决方案是将 TypeConversionValidator 添加到我的属性中。
示例属性:[TypeConversionValidator(typeof(int))]
编辑:忽略这一点。 它没有按照我预期的方式工作。
Another "better" solution is to add a TypeConversionValidator to my property.
Example Attribute: [TypeConversionValidator(typeof(int))]
EDIT: Disregard this. It doesn't work the way I expected it to.