using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using FluentValidation; using Jp.ApiCamService.Dtos; namespace Jp.ApiCam.Infrastructures { /// /// 模型验证扩展类 /// public static class AbstractValidatorExtensions { /// /// 视图模型验证 /// /// 视图模型 /// 验证器 /// 视图模型类型 /// item1: true|false , item2: errormsg public static Tuple ViewModelValidate(this IReadOnlyList viewModels) where TValidator : new() { bool isValid = true; var errors = new StringBuilder(); for (var i = 0; i < viewModels.Count; i++) { var m = viewModels[i]; var validator = new TValidator() as AbstractValidator; var validRes = validator.Validate(m); if (!validRes.IsValid) { isValid = false; errors.Append("索引[" + i + "] " + validRes.Errors.Select(x => x.PropertyName + ":" + x.ErrorMessage).Aggregate((a, b) => a + " 、" + b) + "。"); } } return new Tuple(isValid, new ResponseInfoDto(0, errors.ToString())); } } }