我已经使用asp.net核心web API创建了一个模型,我必须验证属性依赖于布尔数据类型属性值。
如果IsWaitingList属性为true,则WaitingListEncounterOrOtherEncounter属性为required属性,否则它不是必填字段。
public class CenterConfiguration
    {
        public Guid Id { get; set; } = Guid.NewGuid();
        public bool? IsWaitingList { get; set; }
        [Required(ErrorMessage = "Please enter waiting list encounter or other encounter")]
        public int WaitingListEncounterOrOtherEncounter { get; set; }
    } 如果有人知道,请让我知道。
发布于 2017-04-11 15:33:21
您可以实现IValidatableObject来检查复杂的验证条件。
public class CenterConfiguration : IValidatableObject {
    public Guid Id { get; set; } = Guid.NewGuid();
    public bool? IsWaitingList { get; set; }
    public int? WaitingListEncounterOrOtherEncounter { get; set; }
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
         if (IsWaitingList && !WaitingListEncounterOrOtherEncounter.HasValue) {
             yield return new ValidationResult(
                 "Please enter waiting list encounter or other encounter",
                 new[] { "WaitingListEncounterOrOtherEncounter" }
             );
         }
    }
}还要注意,我将WaitingListEncounterOrOtherEncounter从int更改为int?,因此您实际上可以将该值保留为空。
https://stackoverflow.com/questions/43336183
复制相似问题