【发布时间】:2022-08-15 20:31:21
【问题描述】:
假设我们有一个简单的对象,其中包含两个另一种类型
public class Parent
{
[ValidateComplexType]
public Child Child1 { get; set; }
[ValidateComplexType]
public Child Child2 { get; set; }
}
public class Child : IValidatableObject
{
public String Name { get; set; } = String.Empty
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
return new ValidationResult(\"Error\", new[] { nameof(Name) })
}
}
我设法按照建议使用ObjectGraphDataAnnotationsValidator 进行嵌套验证
https://docs.microsoft.com/en-us/aspnet/core/blazor/forms-validation?view=aspnetcore-5.0#nested-models-collection-types-and-complex-types
现在假设我不希望 Child2 与 Child 1 具有相同的 Name,因此我需要比较它们的 Name 属性并在 Child2 输入字段上显示错误。
如果我通过将IValidatableObject 添加到Parent 并在验证方法中返回new ValidationResult(\"Error\", new[] { nameof(Child2.Name) }) 来执行此操作,这实际上不会将该字段设置为无效。
我考虑为每个孩子添加一个Func<Child, Boolean>,然后在我实例化父对象时设置它,看起来像child => child == Child2 && Child2.Name == Child1.Name,它可以工作,但在我看来它非常令人困惑。
如何正确执行此操作?
-
大佬有进展吗?
标签: c# asp.net-core blazor