Data binding ASP.NET 4.5-不引人注目的验证、模型绑定、IValidatableObject接口

Data binding ASP.NET 4.5-不引人注目的验证、模型绑定、IValidatableObject接口,data-binding,webforms,unobtrusive-validation,asp.net-4.5,Data Binding,Webforms,Unobtrusive Validation,Asp.net 4.5,我有一个ASP.NET4.5WebForms站点,我正在尝试使用所有新的奇特功能,如模型绑定和不引人注目的验证 这非常好用——只要我只在单个字段上进行验证——例如,确保输入了某些值等等 但是,当我尝试使用IValidatableObject接口来建立跨多个字段的验证时,我没有得到预期的结果 假设我有一个从SQLServer数据库生成的MyUser类,它是EF 6.1代码优先模型。我通过向该类添加一个实现IValidatableObject接口的分部类来扩展该类: public partial c

我有一个ASP.NET4.5WebForms站点,我正在尝试使用所有新的奇特功能,如模型绑定和不引人注目的验证

这非常好用——只要我只在单个字段上进行验证——例如,确保输入了某些值等等

但是,当我尝试使用IValidatableObject接口来建立跨多个字段的验证时,我没有得到预期的结果

假设我有一个从SQLServer数据库生成的MyUser类,它是EF 6.1代码优先模型。我通过向该类添加一个实现IValidatableObject接口的分部类来扩展该类:

public partial class MyUser : IValidatableObject
{
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
        List<ValidationResult> errors = new List<ValidationResult>();

        if(UserName.Equals(Password, StringComparison.CurrentCultureIgnoreCase)) 
        {
            errors.Add(new ValidationResult("User name and password cannot be the same"));
        }

        return errors;
    }
}
我本以为会调用部分MyUser类上的这个Validate方法来检查模型状态是否有效——但这似乎没有发生

我错过了什么?否则您将如何实现这样的跨域验证

更新:问题似乎在于在单独的部分类文件中实现的IValidatableObject接口的Validate方法没有得到正确识别。你知道为什么吗

只要我将该方法移到主、EF生成的MyUser.cs类,它就可以正常工作。这太棒了——直到有一天我需要再次从数据库中重新创建实体类,当数据库发生更改时

public void Update(int userId)
{
    MyUser existing = _repo.GetUserById(userId);

    if (existing == null) 
    { 
       // handle error
    }

    TryUpdateModel(existing);

    if (ModelState.IsValid)
    {
       // save
    }
}