控件的ASP.NET Core条件验证

例如,我在视图模型中具有这3个属性

public class PageViewModel
{
            [Required]
            public bool? HasControl { get; set; }
            [Required] 
            public bool? Critical { get; set; }
            [Required]         
            public string Description { get; set; }
}

这里的问题是我要设置属性

Critical 
Description

要求HasControl为true,否则为false,这是单选按钮控件。

我尝试在客户端禁用控件,但是在检查Modelstate.IsValid时它们仍然失败。

有没有办法处理这种情况?

pp328397830 回答:控件的ASP.NET Core条件验证

您需要实现IValidatableObject。将验证检查放入Validate方法中。最后返回错误列表。

public class PageViewModel : IValidatableObject
{
    public bool? HasControl { get; set; }
    public bool? Critical { get; set; }
    public string Description { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        List<ValidationResult> errors = new List<ValidationResult>();
        if (HasControl == true)
        {
            if (Critical == null)
                errors.Add(new ValidationResult($"{nameof(Critical)} is Required.",new List<string> { nameof(Critical) }));

            if (string.IsNullOrWhiteSpace(Description))
                errors.Add(new ValidationResult($"{nameof(Description)} is Required.",new List<string> { nameof(Description) }));
        }
        return errors;
    }
}
本文链接:https://www.f2er.com/3146422.html

大家都在问