我已经使用核心 Web API 创建了一个模型 asp.net 我必须验证该属性取决于 bool 数据类型属性值。
如果 IsWaitingList
属性为 true,则 WaitingListEncounterOrOtherEncounter
属性是必需属性,否则它不是必填字段。
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; }
}
如果有人知道,请告诉我。
您可以实现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?
,因此您实际上可以将此值留空。
参见 如何使用 IValidatableObject?