Я новичок в FluentValidation.
У меня есть два класса
public class A
{
public B Prop { get; set; }
}
public class B
{
public decimal? Example { get; set; }
public decimal? Example2 { get; set; }
}
И я пытаюсь проверить свойство B
внутри A
класса.
Если какое-либо свойство Prop
имеет ошибку проверки, я хочу установить первую из ошибок для поддержки объекта.
Я пытаюсь вот так:
public class A : AbstractValidator<A>{
public A()
{
RuleFor(x => x.Prop.Example).NotEmpty();
RuleFor(x => x.Prop.Example2).NotEmpty();
RuleFor(x => x.Prop).Custom((obj,context) => {
if(/* obj.Example or obj.Example2 has validation error */){
context.AddFailure("message of any Example or Example2 errors");
}
});
}
}
Редактировать : какой-то пример моего взгляда
<div class="col-12 col-lg-6">
@Html.LabelFor(x => x.Prop, new { @class = "col-form-label" })
<div class="input-group mb-3">
@Html.EditorFor(x => x.Prop.Example, new { htmlAttributes = new { @class = "form-control" } })
<div class="input-group-append">
<span class="input-group-text">%</span>
<span class="input-group-text">@@</span>
</div>
@Html.EditorFor(x => x.Prop.Example2, new { htmlAttributes = new { @class = "form-control" } })
<div class="input-group-append">
<span class="input-group-text">KVA</span>
</div>
<div class="invalid-feedback">@Html.ValidationMessageFor(x => x.Prop)</div>
</div>
</div>
Он должен отображать примерно так:
Где левый ввод - Пример, и правильный пример - Пример 2.
Итак, если что-то из этого не получилось, сообщение об ошибке должно быть отображено вниз (ValidationMessageFor)
Я не знаю, как проверить Prop
ошибок свойств внутри a RuleFor
Возможно ли так? Как я могу это сделать?