Asp.net 如何在VAB中创建一个同时测试两个属性的自定义验证器?

Asp.net 如何在VAB中创建一个同时测试两个属性的自定义验证器?,asp.net,validation,enterprise-library,wcsf,validation-application-bl,Asp.net,Validation,Enterprise Library,Wcsf,Validation Application Bl,在我的数据库中,我在一个实体上有一个复合唯一键约束(CustomerId,Name)。我想在向数据库提交更改之前测试是否支持唯一约束。用户可以自定义实体上的Name属性,因此我想创建一个自定义验证器来验证Name属性,但在执行此操作时,我还需要访问CustomerId属性。我该怎么做 我正在使用WCSF,这意味着我被困在Entlib 3.1和包含的VAB中,但我想在不破坏WCSF的情况下切换到Entlib 4.1的VAB是可能的 你好,艾吉尔 诀窍是为您的实体创建验证器,而不是为该实体的某个属性

在我的数据库中,我在一个实体上有一个复合唯一键约束(CustomerId,Name)。我想在向数据库提交更改之前测试是否支持唯一约束。用户可以自定义实体上的Name属性,因此我想创建一个自定义验证器来验证Name属性,但在执行此操作时,我还需要访问CustomerId属性。我该怎么做

我正在使用WCSF,这意味着我被困在Entlib 3.1和包含的VAB中,但我想在不破坏WCSF的情况下切换到Entlib 4.1的VAB是可能的


你好,艾吉尔

诀窍是为您的实体创建验证器,而不是为该实体的某个属性创建验证器。您可以在实体上编写自验证,如下所示:

[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));
        }
    }
}
我必须说,我不熟悉VAB3.1的功能集,所以我不能100%确定它在3.1上是否有效。但它在4.1上运行。如果您不喜欢自验证,还可以编写一个自定义验证器并将其连接到配置文件中。有关如何执行此操作的更多信息,请参阅