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