问题标签 [validation-application-bl]

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 投票
2 回答
1099 浏览

.net - 将 ASP.NET MVC 验证与企业库验证集成

我已经在为我的模型使用 Enterprise Library 5 验证(也用于 WCF 方法),所以我决定要避免使用 DataAnnotations 的 ASP.NET 4 MVC 中的冗余验证器。

但似乎 MVC 不会自动选择 Enterprise Library Validators。

如果我使用 MVC DataAnnotations:

HTML 包含 data-val-regex-pattern 并且该字段正在客户端验证。

但是如果我使用现有的基于 EL 的验证:

它不会在客户端显示验证错误,并且生成的 HTML 没有任何验证属性。

我在这里缺少什么,如何强制 MVC 在客户端和服务器端使用现有的 EL 验证器?

解决方案

我接受了完全迁移到 DataAnnotations 的解决方案。这是最简单的方法,它适用于 EntLib 5 和 MVC 4。但是 ValidationFactory 有一个小问题 - 我必须用 CreateValidator 和特定标志替换 CreateValidatorFromAttributes。有关 DataAnnotations 如何与 ValidationFactory 一起使用的说明,请参阅本文:

CreateValidatorFromAttributes 不使用 DataAnnotations 属性

DataAnnotations 还具有 [Required] 属性,可以很好地处理空字符串和仅包含空格的字符串。VAB 上存在一些问题。

0 投票
1 回答
385 浏览

c# - 企业验证阻止父子类的不同规则集

当我为父类和子类有 2 个不同的规则集时,对子类属性的验证不起作用。

这是类代码:Mytype 是父级,Person 是子级

这是针对所有规则集验证 MyType 类的自定义验证器类:

这是失败的测试:(IsValid 应该设置为 False,但它是 True)

你能帮忙吗?

0 投票
1 回答
258 浏览

validation - 验证应用程序块 - 验证属性多个错误顺序

我正在玩 EL 验证应用程序块。使用属性进行验证时,不遵守验证顺序。例如:

当我调用以下代码时:

结果 [0] - 来自 StringLengthValidator 的错误结果 [1] - 来自RequiredStringValidator(自定义验证器)的错误

问题是顺序并不总是相同的。碰巧RequiredStringValidator 错误位于0 索引位置。似乎 .Net CLR 在使用Attributes.GetCustomAttributes检索它时不保证 Attributes 位置,这就是 VAB 获取属性属性的方式。

在此示例中,如果同一属性有 2 个错误,则应显示第一个属性错误(RequiredStringValidator),但有时会显示 StringLengthValidator 属性错误,因为它停留在 ValidationResults 的第一个位置。

使用 ASP.NET MVC 模型状态时会发生这种情况。

如果出现错误,则仅当RequiredStringValidator验证器具有有效结果时才应出现StringLengthValidator消息。

任何想法?

0 投票
2 回答
1578 浏览

c# - 通过接口应用自定义验证器

假设我有一个界面:

我有许多实现它的类。IE

而且我在自定义验证器中对此接口的属性有一个验证逻辑,如下所示:

我有一个属性来应用我装饰 ISomeInterface 的这个验证器。

当我调用 Validation.Validate 时,它​​似乎没有触发 SomeInterfaceValidator 中的验证。它执行特定于 ClassA 的验证,而不是 ISomeInterface 接口的验证。

我怎样才能让它工作?

编辑: 我找到了一种让它工作的方法,那就是进行 SelfValidation,我将其转换为 ISomeInterface 并像这样进行验证。这就足够了,但仍然让问题悬而未决,看看是否有其他方法可以实现这一点。

0 投票
1 回答
353 浏览

enterprise-library - 验证应用程序块 - 自定义验证器 - 消息模板

我正在使用 Enterprise Library 4.1 验证应用程序块。我创建了一个自定义验证器并覆盖了 DefaultMessageTemplate 属性。我的 DoValidate 方法逻辑如下

LogValidationResult(validationResults, String.Format(DefaultMessageTemplate, currentTarget, key), currentTarget, key)

但是,当我在配置工具中为此验证器指定自定义 MessageTemplate 时,仅显示 DefaultMessageTemplate 文本。如何使用自定义验证器的自定义消息覆盖默认消息?

我将不胜感激任何帮助。

谢谢!

0 投票
1 回答
495 浏览

validation - EntLib 自定义验证提供程序示例

我已经尝试构建一个自定义验证提供程序以与EntLib 一起使用。6 完全集成模式的配置控制台。我关注了这篇MSDN 文章:创建自定义提供程序

我见过的所有可用示例都提供了基本的集成或基于属性的验证。我正在寻找一个完整实施的例子。

0 投票
2 回答
329 浏览

validation - 使用 Enterprise Library Validation Application Block 按出生日期验证年龄

我有以下情况:具有属性 BithDay 的域模型。我希望能够验证年龄(将根据生日计算)低于 150 岁。我可以通过使用内置验证器来做到这一点,还是必须自己构建?someoane 可以为我提供 DomainValidator 的示例吗?

0 投票
0 回答
175 浏览

c# - 企业库验证应用程序块验证对象到层次结构中的相关对象

我有一种层次类,这意味着它包含用户定义对象的集合。我希望能够在子级别应用验证,但在父级别引用一些属性。有没有办法通过验证应用程序块中的内置验证器来做到这一点?如果没有,我真的会应用这种验证器的通用示例。

更新

我认为举一个小例子可能有助于理解这个问题。所以这里是:

现在我的问题是我想在组中的注册日期计算ageaperson并验证它。这只是一个微不足道的例子,因为有比这更复杂的场景。验证它的最佳方法是什么?