提问人: 提问时间:9/23/2022 最后编辑:marc_s 更新时间:9/24/2022 访问量:51
如何在视图中向用户显示错误而不是抛出 MVC?
How can I show errors to user on view instead of throwing in MVC?
问:
我创建了一个验证行为,但这不会向视图中的用户显示错误。相反,它会在 Visual Studio 中引发验证异常。如何向视图中的用户显示错误?
public class ValidationBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
where TRequest : IRequest<TResponse>
{
private readonly IEnumerable<IValidator<TRequest>> _validators;
public ValidationBehavior(IEnumerable<IValidator<TRequest>> validators)
{
_validators = validators;
}
public Task<TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next)
{
var context = new ValidationContext<TRequest>(request);
var failures = _validators
.Select(x => x.Validate(context))
.SelectMany(x => x.Errors)
.Where(x=>x !=null)
.ToList();
if (failures.Any())
{
throw new ValidationException(failures);
}
return next();
}
}
public class SaveXValidator : AbstractValidator<SaveXCommand>
{
public SaveXValidator()
{
RuleFor(x=>x.ImageUrl).NotEmpty().WithMessage("Can't be empty!");
RuleFor(b => b.StartDate)
.LessThan(p => p.CreatedDate).WithMessage("error example");
}
}
答:
0赞
Berk KARASU
9/24/2022
#1
您可以使用此视图在一个位置显示所有验证
<div asp-validation-summary="All" class="alert alert-danger" role="alert">
如果要在特定点显示每个属性的验证错误,可以使用此功能。
<span asp-validation-for="@Model.PropertyName" class="text-danger"></span>
评论