【问题标题】:How do I create a custom validator in VAB that tests two properties at once?如何在 VAB 中创建一个同时测试两个属性的自定义验证器?
【发布时间】:2008-12-06 15:32:09
【问题描述】:
在我的数据库中,我有一个实体上的复合唯一键约束(CustomerId、Name)。我想在向数据库提交更改之前测试是否支持唯一约束。用户可以自定义实体上的 Name 属性,因此我想制作一个自定义验证器来验证 name 属性,但是在执行此操作时,我还需要访问 CustomerId 属性。我该怎么做?
我正在使用 WCSF,这意味着我被困在 Entlib 3.1 和包含的 VAB 中,但我想可以在不破坏 WCSF 的情况下切换到 EntLib 4.1 的 VAB。
问候,埃吉尔。
【问题讨论】:
标签:
asp.net
validation
enterprise-library
wcsf
validation-application-bl
【解决方案1】:
诀窍是为您的实体创建验证器,而不是为该实体的属性之一。您可以按如下方式在您的实体上编写自我验证:
[HasSelfValidation]
public class MyEntity
{
public int CustomerId { get; set; }
public string Name { get; set; }
[SelfValidation]
public void ValidateRange(ValidationResults results)
{
bool isUnique = [query the database here]
if (!isUnique)
{
results.AddResult(new ValidationResult(
"CustomerId and Name are not unique", this, "", "", null));
}
}
}
我必须说我不熟悉 VAB 3.1 的功能集,所以我不能 100% 确定这适用于 3.1。但它适用于 4.1。如果您不喜欢自我验证,您还可以编写自定义验证器并将其连接到配置文件中。查看this stackoverflow answer 了解更多信息。