CQRS desenini kullanıyoruz ve akıcı doğrulama işleminin hata işleme ile ilgili bir sorunumuz var. (https://lostechies.com/jimmybogard/2015/05/05/cqrs-with-mediatr-and-automapper/ @ CQRS desen)Akıcı Doğrulama Validasyonu, MVC içinde
public class OtherSpecified : AbstractValidator<Command>
{
public OtherSpecified(ApplicationDbContext context)
{
RuleFor(x => x.Other).NotNull();
}
}
public class DepartmentSpecified : AbstractValidator<Command>
{
public DepartmentSpecified(ApplicationDbContext context)
{
RuleFor(x => x.Department).NotNull();
}
}
Şimdi bu yüzden biz http://lostechies.com/jimmybogard/2014/09/09/tackling-cross-cutting-concerns-with-a-mediator-pipeline/ gelen bilgi dayalı birden soyut doğrulayıcı çalıştırabilirsiniz bizim doğrulama işleyicisi enjekte edin. Bu foreach döngüsü
public TResponse Handle(TRequest request)
{
var context = new ValidationContext(request);
var result = new ValidationResult();
var list = _validators.ToList();
foreach (var validator in list)
{
var results = validator.Validate(request);
foreach (var validationFailure in results.Errors)
{
result.Errors.Add(validationFailure);
//temp testing code below
if (results.Errors.Count > 0)
throw new ValidationException(result.Errors);
}
}
if (result.Errors != null &&
result.Errors.Count > 0)
{
throw new ValidationException(result.Errors);
}
return _inner.Handle(request);
}
sorun akıcı doğrulama istisna (ValidationException) ele olmamasıdır çalışan kuralları görebilirsiniz, çünkü bu ancak çalışır. Kural hataları
Açıklama olarak yukarı kabarcıklar: işlenmeyen bir özel durum geçerli web isteği yürütülürken oluştu. Daha fazla hatayla ilgili bilgileri ve kodda nereden kaynaklandığını öğrenmek için yığın izini gözden geçirin.
durum ayrıntıları: FluentValidation.ValidationException: Doğrulama başarısız oldu: Ne beklenebilir olduğunu
Akıcı doğrulama hatası işlemek ve doğrulama hataları gibi json ajax isteği geri
kadar Tel. Sorununuzu anlıyorum, ancak gerçek şu ki, doğrulama istisnalarını otomatik olarak ele almıyor, yapmanız gerekiyor. Tanımladığınız şeyi yapmak için özel kod yazabilirsiniz, ancak otomatik olarak yapılmaz. – nhouser9