Я использовал проверку аннотации данных на моих страницах Razor, которая работала нормально. Для более сложной проверки я использую Fluent Validation, которая отлично работает для всех, кроме случаев, когда она находится в модальном режиме.
public class MyModel
{
[RegularExpression(@"^Test|Prod", ErrorMessage = "Please Choose A Type")]
public string Type { get; set; }
}
public class MyValidator : MyValidator<MyModel>
{
public MyValidator()
{
RuleFor(x => x.Username)
.Empty()
.When(support => x.Found == false)
.WithMessage("Not Found");
RuleFor(x => x.IsComplete)
.Must(x => x.Equals(true))
.WithMessage("Please confirm");
}
}
Ниже приведен пример модального кода - я упростил его, так что извините за любые ошибки. Код в основном тексте хорошо проверяется, но ничего, что я положил в модал с Fluent Validation, не работает - он просто передается без проверок. У меня есть несколько модалов, делающих одно и то же. Проверка аннотации данных работает нормально.
<div id="" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog-700" role="document">
<div class="modal-content modal-size">
<div class="modal-header">
<h6 class="modal-title">Test</h6>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body">
<div class="container">
<div class="row justify-content-md-center">
<form asp-page-handler="update" method="post">
<div class="form-group">
<label asp-for="MyModel.Username" class="control-label">Test Code</label>
<textarea asp-for="MyModel.Username" class="form-control" rows="2"></textarea>
<span asp-validation-for="MyModel.Username" class="text-danger"></span>
</div>
<div class="form-group">
<button class="btn">
<span class="text">Update</span>
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Я также пробовал:
RuleFor(support => support.Found.ToString())
.Matches(@"^True$")