问题标签 [validationrules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4928 浏览

wpf - 具有多个(失败)ValidationRules 的 BindingGroup

我今天在工作中遇到了一个问题,其中我有一个同时失败的BindingGroup多个s。ValidationRule问题是,当我尝试确定是否有任何错误(即将命令ArgumentException设置为BindingGroup.ValidateWithoutUpdateCanExecutefalse

我已设法将其提炼为以下示例(抱歉,它仍然跨越多个来源,但我已将所有应复制/粘贴到新 WPF 项目中的相关部分包含在内):

Window1.xaml:

Window1.xaml.cs:

个人.cs:

测试规则1.cs:

测试规则2.cs:

基本上,我的问题是,如果两者TestRule1和 TestRule2 fail, I get anArgumentException bubbling up when I callthis.BindingGroup.ValidateWithoutUpdate() with message "Cannot have duplicates in this Collection", parameter name: "validationError". I dug around through the implementation ofBindingGroup , and it seems that it is using itself as the second parameter toValidationError , which is thebindingInError parameter, which the underlyingValidationErrorCollection` 需要是唯一的。

诚然,这个例子是人为的,但是,它完美地展示了我的现实世界问题,但事实并非如此。(我有 2 个完全独立ValidationRule的 s,它们对同一业务对象的不同属性进行操作,将它们折叠成一个 s 是零意义的ValidationRule)。此外,我能找到的每个示例BindingGroup都只演示了单个 的使用ValidationRule,但是该构造清楚地支持并接受多个规则,尽管显然,只要一次只有一个失败。

我是否做错了什么,或者这似乎是BindingGroup实现中的一个错误,正如我目前倾向于认为的那样。

对于它的价值,我使用 VS2008 和 .Net 3.5 SP1。

0 投票
3 回答
3831 浏览

asp.net-mvc - DataAnnotations [必需] 属性不会导致抛出异常

我有一个 Asp.NET MVC 应用程序,我在其中使用数据注释向某些字段添加验证:

然而,这似乎并没有像我预期的那样工作。基本上,如果页面包含我手动检查并抛出新 RuleViolation() 的任何其他错误,则所需的违规将显示在验证摘要中。如果所需的违规是唯一的错误,则不会显示。

我的控制器中有以下代码:

但鉴于规定的违规行为不是投掷,我从不进入这里。

我是否需要做一些我不知道的事情来捕获 DataAnnotation 违规引发的错误?

谢谢你的帮助

编辑:

这是控制器动作:

更新在哪里:

编辑:使用数据注释按预期工作和验证的最终代码。感谢母马。

0 投票
1 回答
961 浏览

wpf - 验证规则的问题

我正在尝试获取验证规则以返回错误。我在我的模型中实现了 IDataErrorInfo,其中包含我的业务对象属性和在事件验证失败时返回的消息。我还创建了一个验证规则。问题是,验证规则正在触发(为它添加书签),但规则中的 IDataErrorInfo 引用永远不会出错,即使我的模型的 IDataErrorInfo 实现生成了一个错误。数据网格肯定显示验证失败。

我通过让规则和模型返回两条不同的消息来测试它,并且总是返回模型的版本。就像我的规则看不到 IDataErrorInfo 对象中的内容,或者它只是在创建它的新实例。

数据网格:

验证规则:

对象 "idei" 不为空,但 idei.Error 始终是零长度字符串 ("")

模型/业务对象

0 投票
2 回答
338 浏览

wpf - 需要关于 MVVM 验证的建议

我正在将我现有的应用程序之一转换为 MVVM 模式以改进其结构,但我对什么是进行数据验证的最佳方式感到有些困惑。

目前,该应用程序使用数据绑定来链接 UI 和代码,并使用一些验证规则和值转换器,这些规则和值转换器可以在相似的值上重复使用(每个用于日期等)。

在阅读 MVVM 时,我遇到了 IDataErrorInfo,我觉得它很有吸引力,因为它会将验证排除在视图之外,从而在设置绑定等时略微减少重复代码,并允许更具体的错误消息。

另一方面,如果验证失败,ValidationRules 会阻止绑定数据的传输,这是我需要的,因为我只希望模型值更改一个新的有效值。

我主要担心的是,如果我在视图模型中限制太多,这会使视图中的事情变得困难 - 在一般情况下将事物限制在舒适的水平,然后补救需要更多灵活性的特定情况是否是个好主意风景?

所以我的主要问题是,将验证和转换放在视图模型的属性中还是坚持我的验证规则和值转换器(或两者之间的某种妥协)会更好吗?

0 投票
1 回答
1389 浏览

wpf - 数据网格中的 WPF 验证规则问题

我在数据网格中使用验证规则时遇到问题:

我想在 DataGridComboBoxColumn 上使用 ValidationRule,我使用了这个示例

寻求指导,特别是 BindingGroup 的东西。

这在一定程度上有效,但似乎非常破碎。ValidatioRule 不会在组合框选择更改后立即触发,而是仅在我更改选择然后单击 DataGrid 中的另一行时触发。我真的需要在更改组合框的选择后立即触发它。

我试过弄乱验证步骤但无济于事,有人可以帮忙吗?

提前致谢!

0 投票
0 回答
184 浏览

wpf - WPF ValidationRule 错误?退格被忽略。有解决办法吗?

我的同事也有这个问题,我们没有机会做太多的调查。

在附加了验证规则的数据网格的文本框中重现问题的步骤。

  1. 以这样的方式输入一些非法内容,一个退格键应该让您返回合法内容。
  2. 退格 - 文本框在不应该出现的时候仍然显示错误
  3. 再次按退格键并清除错误

有没有人遇到过这个并知道解决方法?

提前致谢!

0 投票
2 回答
380 浏览

wpf - WPF ValidationRule:我怎么知道我在验证什么?

好的,所以我尝试创建一个ValidationRule以确保项目的设置宽度在该项目的给定范围内。这是我的尝试:

好的,现在我应该如何知道我应该验证哪个元素?这似乎只支持硬编码的验证规则,似乎没有任何实际用途;您需要在其中进行验证的上下文。我不明白什么吗?这仅适用于人的年龄和字段长度吗?我应该提供静态状态机吗?这是1990年代吗?我很沮丧。

0 投票
5 回答
18692 浏览

wpf - WPF 绑定:对 ValidationRules 使用 DataAnnotations

我已经阅读了很多关于 WPF 验证和DataAnnotations. 我想知道是否有一种干净的方式可以DataAnnotations用于ValidationRules我的实体。

因此,不要拥有这个(Source):

你必须有你的

我希望 WPF 绑定去查看 Age 属性并寻找 DataAnnotation 有点像这样:

如果可能的话,有什么想法吗?

0 投票
1 回答
211 浏览

wpf - 我们可以在验证时设置源对象的属性吗?

我有一个 wpf-mvvm 应用程序。

在下面的代码中,“PartBPremiumBuydown”是一个类的实例。它有两个属性=> 1.值。和 2. HasValidationError。

属性“值”用于绑定到文本框。如果有任何验证错误...我可以设置 HasValidationError=true 吗?

0 投票
1 回答
2763 浏览

wpf - 将 ExceptionValidationRule 添加到代码中的绑定

我一直在开发一个继承自 Decorator 的 ErrorProvider 控件。它验证控件中绑定到某物的任何元素。它遍历每个绑定并在 FrameworkElement 内循环,并将 ExceptionValidationRule 和 DataErrorValidation 添加到绑定的 ValidationRules。

这是完成工作的方法:

显然 DataErrorValidationRule 应用于绑定,但 ExceptionValidationRule 不是。

有谁知道为什么会这样?

编辑: 好的,关于这个问题的更多信息。

我一直在阅读大量有关 Validation 和 Binding 类的 MSDN 文档。如果ExceptionValidationRule已与绑定相关联,则Binding.UpdateSourceExceptionFilter属性允许您指定处理绑定上发生的任何异常的函数。

我为 UpdateSourceExceptionFilter 属性添加了一个方法,你猜怎么着!它被执行了。但!!即使我返回了异常,ValidationError 对象也没有添加到绑定元素的 Validation.Errors 集合中,即使 MSDN 文档说它会......

我注释掉了动态添加 ExceptionValidationRule 的代码,并手动将一个添加到 XAML 中的绑定,如下所示:

执行了 UpdateSourceException 方法(我没有更改它),并将错误添加到 MSDN 所述的 Validation.Errors 中。

对这整件事感到好奇的是,当通过 VB.NET 代码完成时,ExceptionValidationRule 实际上已添加到绑定中(否则 UpdateSourceException 将永远不会执行);但是,Validate.Errors 不会随错误更新。

正如我之前所说,DataErrorValidationRule 已添加到绑定中并且可以正常工作......我只是遇到了 ExceptionValidationRule 的问题。

我的解决方案:

事实证明,我必须调用绑定的BindingOperations.SetBinding 方法和将验证规则应用于绑定的属性。我无法在ApplyValidationRulesToBindings方法中检索元素/绑定的 DependencyProperty,因此我将应用规则的代码移动到回调方法,提供了递归检索所有绑定的方法。

这是我的解决方案:

谢谢!

-弗林尼