例如,我的 View 模型中有这 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 时它们仍然失败。
有办法处理这种情况吗?
最佳答案
您需要实现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;
}
}
关于c# - ASP.NET Core 控件条件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58744905/