wyb
2021-05-11 49ce087bd2a34a150597e1cc1da157af242c0b6d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using FluentValidation;
using Pcb.ApiService.Dtos;
 
namespace Pcb.Api.Infrastructures
{
    /// <summary>
    /// 模型验证扩展类
    /// </summary>
    public static class AbstractValidatorExtensions
    {
        /// <summary>
        /// 视图模型验证
        /// </summary>
        /// <param name="viewModels">视图模型</param>
        /// <typeparam name="TValidator">验证器</typeparam>
        /// <typeparam name="T">视图模型类型</typeparam>
        /// <returns>item1: true|false , item2: errormsg</returns>
        public static Tuple<bool, ResponseInfoDto> ViewModelValidate<TValidator, T>(this IReadOnlyList<T> 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<T>;
                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<bool, ResponseInfoDto>(isValid, new ResponseInfoDto(0, errors.ToString()));
        }
    }
}