C# 如何验证模型取决于使用asp.net核心web api的bool数据类型值
我已经使用asp.net核心web API创建了一个模型,并且我必须根据bool数据类型属性值验证属性 如果C# 如何验证模型取决于使用asp.net核心web api的bool数据类型值,c#,asp.net-mvc-4,asp.net-web-api2,asp.net-core-webapi,C#,Asp.net Mvc 4,Asp.net Web Api2,Asp.net Core Webapi,我已经使用asp.net核心web API创建了一个模型,并且我必须根据bool数据类型属性值验证属性 如果IsWaitingList属性为true,则WaitingListenCounterOtherConference属性为必填属性,否则它不是必填字段 public class CenterConfiguration { public Guid Id { get; set; } = Guid.NewGuid(); public bool? IsWait
IsWaitingList
属性为true,则WaitingListenCounterOtherConference
属性为必填属性,否则它不是必填字段
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" }
);
}
}
}
公共类中心配置:IValidatableObject{
公共Guid Id{get;set;}=Guid.NewGuid();
公共bool?IsWaitingList{get;set;}
公共int?WaitingListenCountorOtherConference{get;set;}
公共IEnumerable验证(ValidationContext ValidationContext){
if(IsWaitingList&!WaitingListenCountorOtherConference.HasValue){
返回新的ValidationResult(
“请输入等待名单遭遇或其他遭遇”,
新建[]{“WaitingListenCountorOtherConference”}
);
}
}
}
还请注意,我将waitinglistencountorotherconference
从int
更改为int?
,因此您可以将此值保留为空
另见