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

发布于 2024-07-13 13:43:18 字数 275 浏览 8 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南冥有猫 2024-07-20 13:43:18

我找到了解决方案。

字符串到 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.

指尖上得阳光 2024-07-20 13:43:18

另一个“更好”的解决方案是将 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文